【发布时间】:2013-07-20 21:27:48
【问题描述】:
我听取了许多人的建议,我没有使用 Struct,而是使用类来创建列表
sn-ps 代码
class BigClass
class rawData
{
public string recType;
public string ncmCode;
}
然后我使用流读取器将数据获取到对象中。
List<rawData> myData = new List<rawData>();
rawData tempRawData = new rawData();
while ((dataLine = readRawData.ReadLine()) != null)
{
.....
for (int i = 0; i < tokens.Length; i++)
{
// code to set fields of tempRawData stripped
....
}
myData.Add(tempRawData);
}
这个对象被添加到列表 myData 但发生的事情是当循环再次使用新的 tempRawData 运行时,它只是将它添加到 myData 并替换之前复制的内容。所以我得到 2 行相同的数据......它对 x 行执行此操作,所以如果它运行 10,000 次,则列表中的 10,000 行包含相同的数据,即在 csv 文件的第 10,000 行读取的数据。 ...
【问题讨论】:
-
Add()不要替换任何东西,所以你可能弄乱了你的列表。 -
我在代码的顶部声明了它。代码真的很长,所有的工作,但它只是将数据复制到每一行,它在列表中移动的越多。
-
我认为您需要在每次迭代中重新初始化 tempRawData。所以在每个循环中使用
new。目前,您的列表将包含对同一对象的多个引用。 -
这就是我的想法,我试过了,myData.Add(new rawData(tempRawData)) 没有成功...
-
我已更新您的示例以删除不相关的部分 - 请随时回滚。