【问题标题】:clear a list, all class values are gone清除列表,所有类值都消失了
【发布时间】:2012-10-03 20:41:49
【问题描述】:
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

我的选择是什么?

【问题讨论】:

  • 你想要完成什么?
  • 在 List.Clear() 调用之后您还能期待什么?

标签: c# list class


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    如果您不希望这种行为,请将其复制到您的类字段:c2.lname = new List&lt;string&gt;(lhs)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多