C# - 列表成员需要深层复制?

标签 c#

我有一个 List<int> 的类(class)成员。如果我想克隆此类的一个实例,我需要深拷贝还是 MemberwiseClone()浅拷贝就够了吗?

如果至少有一个成员是对对象的引用,我们就需要一个深拷贝,对吧?这是否意味着拥有 List、DateTime、String、MyClass ……需要深拷贝?

最佳答案

这完全取决于您打算如何使用副本。

如果你做一个像这样的浅拷贝

List<int> x = new List<int>() { 1, 2, 3, 4, 5 };
List<int> y = x;
y[2] = 4;

然后 x 将包含 {1, 2, 4, 4, 5 }

如果你对列表进行深拷贝:

List<int> x = new List<int> { 1, 2, 3, 4, 5 };
List<int> y = new List<int>(x);
y[2] = 4;

然后 x 将包含 { 1, 2, 3, 4, 5 } 并且 y 将包含 { 1, 2, 4, 4, 5 }

您计划如何使用副本真正决定了您是使用浅副本还是深副本。

关于C# - 列表成员需要深层复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2314496/

相关文章:

c# - 团结 : Diagonal movement not corresponding to correct key inputs

c# - 学习创建自定义 Silverlight 组件

c# - 有没有办法在 xunit 测试类中的每个测试之前异步运行设置方法?

c# - ASP.NET MVC 每个 View 1 个 ViewModel?

c# - 将 IEnumeration 项目发布到 Controller

c# - InputScope 类型 NumericPassword 在我的情况下不起作用

c# - 服务器和 Unity 应用程序之间的通信

c# - Angular 7 到 dotnetcore 2.1 web api 调用没有响应

c# - 从 Windows 服务启动 Windows 应用程序

c# - 如果 SharePoint 文件夹不存在,则创建该文件夹