相关疑难解决方法(0)

复制构造函数与克隆()

在C#中,向类添加(深层)复制功能的首选方法是什么?是应该实现复制构造函数,还是从派生ICloneable并实现该Clone()方法?

备注:我在括号内写了"深刻",因为我认为这是无关紧要的.显然其他人不同意,所以我问复制构造函数/操作符/函数是否需要明确它实现的副本变体.

c#

107
推荐指数
6
解决办法
7万
查看次数

复制构造函数/操作符/函数是否需要明确它实现的副本变体?

昨天我问了一个关于在C#中复制对象的问题,大多数答案都集中在深拷贝浅拷贝之间的区别,以及应该弄清楚两个拷贝变体中的哪一个给定拷贝构造函数(或运算符或函数)的事实.实现.我发现这很奇怪.

我用C++编写了很多软件,这种语言很大程度上依赖于复制,我从来不需要多种复制变体.我用过的唯一一种复制操作是我称之为" 足够深的复制 ".它执行以下操作:

  • 如果对象拥有成员变量的所有权(参见合成),则会以递归方式复制它.
  • 如果对象对成员变量没有所有权(参见聚合),则仅复制链接.

现在,我的问题有三个:

  • 1)对象是否需要多个副本变体?
  • 2)复制功能是否需要明确它实现的复制变体?
  • 3)顺便说一句,对于我称之为"足够深的复制品",是否有一个更好的术语?我问了一个关于"深层复制"这个术语定义的相关问题.

language-agnostic copy deep-copy shallow-copy

13
推荐指数
3
解决办法
1955
查看次数

标签 统计

c# ×1

copy ×1

deep-copy ×1

language-agnostic ×1

shallow-copy ×1