其实我不明白它的概念,意思是为什么以及什么时候应该使用它。通常,我们可以为一个类的实例赋值,但为什么我们应该像这样将一个对象发送给另一个对象:
private void button8_Click(object sender, EventArgs e)
{
rectangle r1 = new rectangle(50, 70);
rectangle r2 = new rectangle(r1);
}
class rectangle
{
private int length;
private int breadth;
public rectangle(rectangle x)
{
length = x.length;
breadth = x.breadth;
MessageBox.Show("I'm a Copy Constructor. \n Length= " + length.ToString() + "\n breadth= " + breadth.ToString());
}
}
最佳答案
复制构造函数是从 C++
借用的概念:此构造函数的唯一目的是从现有对象创建副本。此外,如果程序员未提供复制构造函数,编译器会自动定义 C++
中的复制构造函数(隐式复制构造函数)。您可以混合使用:对于具有特殊复制行为的类,您可以提供复制构造函数。对于其他类,如果该类具有此类型的成员,则隐式复制构造函数会调用您自定义的复制构造函数。
总结:C++
中的复制构造函数是一种复制对象及其成员的简单方法。诀窍是您不必显式提供一个,并且它在编译器级别受支持。
据我所知,C#
中没有隐式复制构造函数。除了这种特殊的构造函数,您还可以在 C#
中使用克隆。参见 this question , 例如。
另一个注意事项:structs
在赋值时被复制,但不是递归的。即使有no implicit copy constructor ,它只是一个简单的内存副本。
对于 C++ 复制构造函数,请参阅 section 12.8, page 288 in the C++14 standard例如。
关于c# - 什么是复制构造函数以及何时应在 C# 中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35675010/