-3
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

我的替代方案是什么?

4

2 回答 2

2

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

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

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

于 2012-10-03T20:43:15.393 回答
1

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

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

于 2012-10-03T20:47:27.510 回答