另一种参考/价值类型滥用

时间:2012-05-28 20:18:18

标签: c# .net arrays reference

看起来我无法理解引用和值类型列表背后的概念。

在这里,我想填充一个30000 uint16的数组,一次有125个值。

完成后我想将它添加到列表中并开始填充另一个30000值的块。但是,我只将引用存储到一个数组中。这是一个测试代码:

UInt16[] ND = new UInt16[30000];
OMD.Clear();
for (int i = 0; i < 30000; i++) ND[i] = (ushort)i;
OMD.Add(ND);
for (int i = 0; i < 30000; i++) ND[i] = 13;
OMD.Add(ND);

在第二个循环中,OMD的第一个数组成员丢失其值并更改为13。

1 个答案:

答案 0 :(得分:1)

您可以清除参考并在每个周期后创建一个新参考。

UInt16[] ND = new UInt16[30000];
OMD.Clear();
for (int i = 0; i < 30000; i++) ND[i] = (ushort)i;
OMD.Add(ND);

ND = new UInt16[30000];
for (int i = 0; i < 30000; i++) ND[i] = 13;
OMD.Add(ND);