List <List>混乱 - c#

我的代码段

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

基本上,即时通讯会通过一个大列表将元素分组,一个新的列表名称库存。

现在的问题是,当我向库存添加清单中包含的所有元素,然后在下一行清除库存以再次开始时,我删除了库存中存储的所有元素。

有任何想法吗。我是否必须像股票[i] .Add(stock)那样对股票进行索引,以便类似股票的每一块都是股票中的一个元素。

谢谢你的帮助。

参考方案

问题是List<T>对象与.NET中的所有类一样,都是引用类型。这意味着每次将stock添加到stocks时,都不会添加新列表,而只是添加对内存中同一列表的引用。因此,当您以后调用Clear时,这会同时反映在变量stockstocks中的所有其他引用中。

您可以通过在每次将stock添加到stocks时对其进行浅拷贝来解决此问题:

stocks.Add(stock.ToList());

将List <List <string >>转换为List <string> - c#

This question already has answers here: Closed 9 years ago. Possible Duplicate: Linq: List of lists to a long list我已经使用LINQ进行了转换。List<List<string>>至List<string>.如…

List <Dog>是List <Animal>的子类吗?为什么Java泛型不是隐式多态的? - java

我对Java泛型如何处理继承/多态感到困惑。假设以下层次结构-动物(父母)狗-猫(儿童)因此,假设我有一个方法doSomething(List<Animal> animals)。根据继承和多态性的所有规则,我假设List<Dog>是List<Animal>,而List<Cat>是List<Animal&g…

C#等效于Java List <?扩展类> - c#

我有泛型类的基本结构public class Parent<T> where T : Parent<T> { Action<T> Notify; } public class Child : Parent<Child> { } 我想要一个列表,以便可以将Child对象放在此处List<Parent>…

如何在会话状态下添加List <string> - c#

有没有办法在会话中添加列表?或以其他方式在另一个页面中传递List的值? 参考方案 List<string> ast = new List<string>(); ast.Add("asdas!"); Session["stringList"] = ast; List<string> …

将对象转换为List <object> - c#

我看过类似的问题,但没有什么合适的。我有一个碰巧包含列表的对象。我想把它变成我可以列举的东西。例如:object listObject; // contains a List<Something> List<object> list; list = listObject as List<object>; // list c…