清除列表,所有类值都消失了

时间:2012-10-03 20:41:50

标签: c# list class

class Class2
{
    public string ven;
    public List<string> lname = new List<string>();
}
List<Class2> l = new List<Class2>();
List<string> lhs = new List<string>();

Class2 c2 = new Class2();
c2.ven = line_split[0];
c2.lname = lhs;

l.Add(c2);
lhs.Clear();

执行lhs.Clear()时,它会清空对象l

我的替代方案是什么?

2 个答案:

答案 0 :(得分:2)

如果您不想清除lhs清除存储在对象上的列表,则必须在将列表分配到对象的字段时复制该列表:

c2.lname = new List<string>(lhs);

理想情况下,您将在Class2的构造函数中执行此操作。

答案 1 :(得分:1)

lhs和lname变量指向同一个List<string>对象。所以,当你清除lhs时,lname自然也会被清除(它们指向同一个对象!)

如果您不想要此行为,请将其复制到您的类字段:c2.lname = new List<string>(lhs)