如何从列表中分离一个变量,它从 C# 获取它的值

Dav*_*SNB 1 c# list

所以我有一个清单:

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

Mar*_*ell 5

我认为这里的主要问题是期望之一:

Class item = myList[0]
Run Code Online (Sandbox Code Playgroud)

没有创建一个对象(假设Class是一个class,即,引用类型); 它制作引用的副本并将其分配给局部变量item,但是:引用指向相同的单个对象。

这里的关键是只有一个对象;您只复制了reference,这只是(本质上)一个指针。您使用哪个引用/指针并不重要:您所做的任何更改仍然会影响同一个对象,并且您将没有备份。

对于您所需要的,您需要考虑创建对象的克隆(深度克隆或浅克隆,取决于您的需要)。

或者,请注意您描述的问题不适用于值类型,但它们具有更复杂的使用限制(除非非常小心地处理)会以其他微妙的方式绊倒您。