0

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

在这里,我想填充一个包含 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。

4

1 回答 1

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);
于 2012-05-28T20:21:39.193 回答