为我的 C# 类编写通用复制构造函数的最佳方法是什么? 它们都继承自抽象基类,因此我可以使用反射来映射属性,但我想知道是否有更好的方法?
最佳答案
复制构造函数基本上意味着您只有一个参数,即您要复制的对象。
此外,进行深拷贝,而不是浅拷贝。
如果您不知道什么是深拷贝和浅拷贝,那么请注意:
假设您正在复制一个类,该类将一行整数作为字段。
浅拷贝是:
public class Myclass()
{
private int[] row;
public MyClass(MyClass class)
{
this.row = class.row
}
}
深拷贝是:
public class Myclass()
{
private int[] row;
public MyClass(MyClass class)
{
for(int i = 0; i<class.row.Length;i++)
{
this.row[i] = class.row[i];
}
}
}
深拷贝真正获取实际值并将它们放入新对象的新字段中,而浅拷贝仅复制指针。
对于浅拷贝,如果你设置:
row[3] = 5;
然后打印两行,两行都将 5 作为第 4 个数字的值。 然而,对于深拷贝,只有第一个打印会有这个,因为行没有相同的指针。
关于c# - 通用 C# 复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/433926/