日期:2014-05-17  浏览次数:20900 次

C#编程在VS25中调试 一个结构体数组赋值时,出现奇怪问题,给其中一个数组元素的某个结构体成员赋值时,其它数组元素的某个结构体成员值自动改变了.
比如定义了结构体数组   oldpop[M个元素],  结构体中有一个数组 by[lchrom个元素]
for (i = 0; i < Constants.lchrom; i++)
                    for (j = 1; j < Constants.M; j++)
                        oldpop[0].by[i] += oldpop[j].by[i];
C#编程,执行完oldpop[0].by[i] += oldpop[j].by[i];后 oldpop[1,2,3,4……M-1].by[]全变为了
oldpop[0].by[]

求指教!!!
结构体数组

------解决方案--------------------
问题在于你的oldpop数组中的所有成员都是引用到同一个对象上。

你应该让它们指向不同的对象。
------解决方案--------------------
initialwx()
的最后一个for循环里
oldpop[i] = oldpop[0];
导致所有的结构体引用了相同的数组