c# - 为什么要使用 Clone()?

标签 c# language-features

在 C# 中使用 Clone() 的主要目的是什么?

使用它有什么好处?

最佳答案

想法是,使用Clone,您可以创建一个与调用它的对象类型相同的新对象,而无需知道调用它的对象的确切类型.

例如:

void Test(ICloneable original)
{
    var cloned = original.Clone();
}

此处 clonedoriginal 具有相同的运行时类型,您无需知道该类型是什么即可执行克隆。

然而,ICloneable 的用处几乎没有,因为它没有定义克隆操作的语义:它是 shallow copy 吗?或 deep copy ?由于界面不强制要求其中之一,因此您无法真正知道返回的是什么。由于知道这是必不可少的,因为您需要相应地处理克隆,所以 ICloneable 本身几乎就是一张烧毁的卡片。

不过,使用 Clone 方法(具有明确定义的语义)定义您自己的接口(interface)很有意义。

更新:另见:Why should I implement ICloneable in c#?

关于c# - 为什么要使用 Clone()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5443384/

相关文章:

c# - 解析视频 ID 的 URL

javascript - 你如何退出 JavaScript 中的调用函数?

perl - 为什么 'last' 在 Perl 中被称为 'last' ?

go - 为什么 Go 常量中不允许使用 `math.Sin`?

c# - ADFS 2.0 注销重定向不起作用

c# - 我可以在 C# DocumentDb 驱动程序中使用多态/继承吗

c# - Xamarin iOS : Wait for HKHealthStore SaveObject to finish

c# - 文本框值不保存

sdk - 充分利用 CUDA 5 的功能需要哪些卡和计算能力

c# - 有没有办法使 C# 绑定(bind)静态工作?