复制构造函数的需求是什么

本文关键字:是什么 需求 构造函数 复制 | 更新日期: 2023-09-27 18:36:16

当我只需使用以下 C# 语句就可以将一个对象复制到另一个对象时,为什么需要复制构造函数?

objNew=objOld;

复制构造函数的需求是什么

您不会使用 objNew = objOld "复制"对象。您创建引用,而不是副本;看到这里

    Parent a = new Parent() { ID = 1, Name = "A" };
    Parent b = a;
    b.ID = 2;
    Console.WriteLine(a.ID); // output is 2

而父级是具有 ID 和名称的某个对象。如果您看到写入的输出 = 2,为什么?因为 a = b:a.ID = 2(而不是您对"副本"的期望 1>它是具有不同名称的同一对象)。

例如,请参阅值与引用类型(常规编程);http://www.albahari.com/valuevsreftypes.aspx

你想要(或期望)的更多是这样的:

    Parent a = new Parent() { ID = 1, Name = "A" };
    Parent b = a.Clone(); // or copy or whatever you want to call it
    b.ID = 2;
    Console.WriteLine(a.ID); // here we have 1 now

当我只需使用以下 C# 语句就可以将一个对象复制到另一个对象时,为什么需要复制构造函数?

默认情况下,C# 不提供复制构造函数。

复制构造函数是指将一个对象的数据复制到另一个对象的构造函数。

这意味着如果要在复制对象期间操作数据,则需要定义复制构造函数。

编写复制构造函数