我希望new关键字不仅可以创建一个新对象,还可以使用唯一的内存引用。如果我这样做,并且在清除“tinyList”之后,bigList也将被清除。
bigList.Add(new bigListObject(tinyList));
bigList是一个List,Construcotr看起来像
public Foo(List<SmallClass> in)
{
_test = new List<SmallClass>();
_test = in;
}
这有效,但是如何清除tinyList,填充它,并继续添加到bigList? 整个想法是有一个大的列表和一个小的添加..现在我有两个不同类的两个列表,几乎相同。 感谢
答案 0 :(得分:3)
您可以将引用复制到新列表中:
public Foo(List<SmallClass> in)
{
_test = new List<SmallClass>(in);
}
现在_test
和in
指向两个不同的列表,因此从一个列表中删除对象不会影响另一个列表。
但是,它们是相同的引用。因此,编辑列表SmallClass
中的in
个实例之一将影响列表_test
中的相应实例,因为引用指向相同的实例。
如果您需要SmallClass
个实例的副本,则需要实施复制方法(或使用object.MemberwiseClone
)