c# - 使用数组复制结构时如何强制进行深度复制?

标签 c#

如果有一个

struct A {
  public double[] Data;
  public int X;
}

在使用 operator= 或将 A 的实例添加到容器时,如何强制进行深度复制?

问题例如:

A a = new A();
var list = new List<A>();
list.Add(a); // does not make a deep copy of Data
A b = a; // does not make a deep copy of Data

我真的必须实现自己的 DeepClone 方法并每次都调用它吗?这将非常容易出错......

最佳答案

一般来说,您应该避免将可变引用类型(如 Array)放入结构中。参见 this question 并回答。

所以让你的类成为一个引用类型,并给它一个 DeepCopy 方法。或者甚至更好 - 让您的类型不可变,这样您就不需要制作副本。

关于c# - 使用数组复制结构时如何强制进行深度复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706176/

相关文章:

c# - C# 结构的属性在 COM 和 VB6 中获得不可用的名称?

c# - 如何在 Delphi 中创建 SQL Server CE 数据库?

c# - .NET 内存大小

c# - System.Net.Sockets.Socket() 如何使用它的参数?

c# - 在ASP.NET C#中读取表单变量时出现问题

c# - 添加或修改 True Type 字体 (TTF) 中字形的简单方法

c# - RichtextBox 中的文本数量(行和列)

c# - 如何用一个空格替换 2 个或更多空格?我需要用另一种模式替换一种模式

c# - 用逗号分隔的字符串列表,并为列表的每个项目添加前缀字符串

c# - ASP.NET javascript 未执行