gpt4 book ai didi

c# - List 困惑

转载 作者:行者123 更新时间:2023-12-03 16:10:30 25 4
gpt4 key购买 nike

我的代码片段

List<List<optionsSort>> stocks = new List<List<optionsSort>>();
optionsSort tempStock1 = new optionsSort();
List<optionsSort> stock = new List<optionsSort>();

然后是一些代码,

for (int j = 1; j < optionsSt.Count; j++)
{

if (optionsSt[j].isin == optionsSt[j - 1].isin)
{

tempStock1.name = optionsSt[j].name;
tempStock1.date = optionsSt[j].date;
tempStock1.strike = optionsSt[j].strike;
tempStock1.size = optionsSt[j].size;
tempStock1.isin = optionsSt[j].isin;
tempStock1.callPut = optionsSt[j].callPut;

stock.Add(tempStock1);

}
else
{

stocks.Add(stock);

k = k + 1;
stock.Clear();

tempStock1.name = optionsSt[j].name;
tempStock1.date = optionsSt[j].date;
tempStock1.strike = optionsSt[j].strike;
tempStock1.size = optionsSt[j].size;
tempStock1.isin = optionsSt[j].isin;
tempStock1.callPut = optionsSt[j].callPut;

stock.Add(tempStock1);



}




}//endfor

基本上,我通过一个大列表将元素分类到组中,一个新的列表名称 stocks。

现在的问题是,当我向 stocks 添加列表 stock 中包含的所有元素,然后在下一行清除 stock 以重新开始时,我删除了存储在 中的所有元素>股票

任何想法。我是否必须像 stocks[i].Add(stock) 这样的股票建立索引,这样每 block 相似的股票都是 stocks 中的一个元素。

感谢您的帮助。

最佳答案

问题是 List<T>与 .NET 中的所有类一样,对象是引用 类型。这意味着每次添加 stockstocks您不是在添加 列表,您只是在内存中添加对相同 列表的引用。所以当你稍后调用 Clear ,这反射(reflect)在您的变量 stock 中以及 stocks 中的所有其他引用资料.

您可以通过浅拷贝 stock 来解决这个问题每次将其添加到 stocks :

stocks.Add(stock.ToList());

关于c# - List<List> 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17762903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com