gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:27:31 26 4
gpt4 key购买 nike

如果有一个

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com