问题描述
我在C#里,某个函数的参数是一个类,发生了很奇怪的问题。我打个比分来说明下。classNode{publicNode[]_child;publicintA;publicstringB;......}//这是那个类的大概情况一个函数:FuncA(Node[]NodeList){for(inti=0;i<NodeList.Length;i++){if(NodeList[i]._child!=null){FuncA(NodeList[i]._child);}else{......}}}//其实就是一个树状结构的遍历,还有一下对应操作。然而在实际使用中,发生了以下问题。FuncMain(TYPEroot){if(root.NodeList!=null)FuncA(root.NodeList);}root是包含NodeList的一个类。但是在运行过程中,发现第一次调用FuncA,root.NodeList里所有结点的_child都是null。而且,更奇怪的是,我DEBUG,断点断下来后。鼠标指向“FuncA(root.NodeList)”这里,查看NodeList里面的结点的_child都是null。然后,我鼠标指向"FuncMain(TYPEroot)”这里的root,查看root.NodeList里面结点的_child都是有内容的。然后再次查看“FuncA(root.NodeList)”这里,奇怪的是,NodeList里面结点的内容又都有了。然后让程序运行下去,结果就正确的。不这么做,运行的结果就是不正确的。仅仅停下来,鼠标指指就改变了程序运行的结果?不知道有没有高人知道这是啥情况啊。。如果谁能帮忙,100分,毫不吝啬。
解决方案
解决方案二:
能否再具体一点,把可执行的代码帖上来看看?尝试用下REF了,实在不行的话。。。
解决方案三:
工程比较大。。而且我不想改变原本root的内容
解决方案四:
我感觉你用枚举更好些,但是怎么写的我忘不记得了,你可以查一下资料
解决方案五:
这个就是递归呀如果有子节点if(NodeList[i]._child!=null)则遍历之funcA(NodeList[i]._child)
解决方案六:
不是类数组的问题,而是你的用法有问题,