0

我希望 new 关键字不仅可以创建一个新对象,还可以创建唯一的内存引用。如果我这样做,并且在清除“tinyList”之后,bigList 也将被清除。

bigList.Add(new bigListObject(tinyList));

bigList 是一个 List 和 Construcotr 看起来像

public Foo(List<SmallClass> in)
    {
        _test = new List<SmallClass>();
        _test = in;
    }

这可行,但我怎样才能清除 tinyList、填充它并继续添加到 bigList?整个想法是有一个大列表和一个小列表用于添加。现在我有两个来自两个不同类的列表,几乎相同。谢谢

4

1 回答 1

3

您可以将引用复制到新列表:

public Foo(List<SmallClass> in)
{
    _test = new List<SmallClass>(in);
}

now_testin指向两个不同的列表,因此从一个列表中删除一个对象不会影响另一个。

但是,它们是相同的引用。因此,编辑列表中的一个SmallClass实例in将影响列表中的相应实例,_test因为引用指向相同的实例。

如果您需要SmallClass实例的副本,那么您需要实现一个复制方法(或使用object.MemberwiseClone

于 2013-05-09T19:53:20.423 回答