如果班级实施 ICloneable, , 这意味着什么?

有帮助吗?

解决方案

那是 IClonable.Clone 方法。文档说该方法旨在克隆对象。该文档特别指出,克隆可以是深的或浅的。还指出了结果类型 必须 与克隆的对象相同,但是在类型系统中不能保证它实际上是如此。

总而言之,它并没有提供太多的艰难承诺,但目的是创建独立的克隆。

其他提示

这只是意味着班级必须实现一种方法 Clone 这返回一个对象,而不是更多。因此,您可以拥有一种接受可观的方法,然后可以克隆该对象。

基本上,它只是允许班级克隆:

http://msdn.microsoft.com/en-us/library/system.iclonable.aspx

实现任何接口时,您需要定义该接口中的方法。在这种情况下,克隆方法将需要在您的课程中定义。

Microsoft的示例:

public object Clone()
{
    return this.MemberwiseClone();
}

可隆起本身并不有意义,但可能会与其他约束结合使用(例如,一个可以提供参数必须是实现iClononable的foo)。因此,一个人可以拥有一个foo,clonablefoo,一个高级曲和一个cloneableadvancedfoo,从而允许支持克隆的foo衍生物与没有那些的foo衍生物,但也允许允许常规的例程,这些例程可以接受可克隆的foo衍生物。

不幸的是,虽然传递了具有iClonable和foo约束的函数参数可以用作象征性的,并且没有打字,但没有办法创建一个符合此类条件的字段,也没有任何方法可以输入字段。为此,一种补救措施可能是创建一个可观的(t为thable(t)的t),其中包含一种返回t的“克隆”方法,以及一个“自我”方法,也返回t(因此,持有“持有”字段”可以通过“自我”方法作为foo访问foo”。要使这一切都起作用,需要一点一点的谨慎,但是模式应该非常好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top