所以我有一个清单:
List<Class> myList = new List<Class>
Run Code Online (Sandbox Code Playgroud)
我创建了一个等于其中一个项目的对象,以便我可以更新它:
Class item = myList[0]
Run Code Online (Sandbox Code Playgroud)
我还有该项目的副本(以便我可以在需要时恢复任何更改):
Class copyItem = myList[0]
Run Code Online (Sandbox Code Playgroud)
当我更新item项目时myList也会更新,这就是我想要的。
但是我不希望 . 发生这种情况,copyItem我该如何制作才能使副本不引用myList?
我认为这里的主要问题是期望之一:
Class item = myList[0]
Run Code Online (Sandbox Code Playgroud)
并没有创建一个对象(假设Class是一个class,即,引用类型); 它制作引用的副本并将其分配给局部变量item,但是:引用指向相同的单个对象。
这里的关键是只有一个对象;您只复制了reference,这只是(本质上)一个指针。您使用哪个引用/指针并不重要:您所做的任何更改仍然会影响同一个对象,并且您将没有备份。
对于您所需要的,您需要考虑创建对象的克隆(深度克隆或浅克隆,取决于您的需要)。
或者,请注意您描述的问题不适用于值类型,但它们具有更复杂的使用限制(除非非常小心地处理)会以其他微妙的方式绊倒您。