正在奋战人工智能大作业,被C#里奇怪的参数传递折腾了一个下午+一个晚上,终于弄明白了。
起因是在一个递归函数里,莫名其妙的一直出现数组越界。经过测试才明白:
把一个元素为类对象的数组作为实参传入函数中,实际上传递的只是它的引用,也就是说,在函数中用Array.Copy方法复制一个新的副本,该副本中的元素仍然是对原对象的引用,对这个副本做的任何修改会直接影响原对象。
所以,现在为了不影响原对象,复制一个List<T>[]的时候,只能遍历一次原对象,将元素一个个添加到新的数组里……
也许是我土,也许是C#…