Otros consejos

Sólo significa que la clase debe implementar un Clone método que devuelve un objeto, no más que eso. Para que pueda tener un método que acepta un ICloneable y luego se puede clonar ese objeto.

Básicamente, sólo se permite a la clase a ser clonada:

http://msdn.microsoft.com/en-us/ biblioteca / system.icloneable.aspx

Al implementar cualquier interfaz, que son necesarios para definir los métodos de la interfaz. En este caso, será necesario el método de clonación que se definirá en su clase.

Ejemplo de Microsoft:

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

ICloneable no es significativo por sí mismo, pero puede ser útil en conjunción con otras limitaciones (por ejemplo, uno podría establecer que un parámetro debe ser un Foo que implementa ICloneable). De este modo, se podría tener un Foo, un CloneableFoo, un AdvancedFoo, y una CloneableAdvancedFoo, permitiendo derivados Foo que la clonación de apoyo a distinguirse de aquellos que no lo hacen, sino que también permite rutinas que esperar una Foo cloneable para aceptar un derivado cloneable de Foo.

Por desgracia, mientras que un parámetro de función pasada con limitaciones IClonable y Foo puede ser utilizado como un IClonable y como Foo, sin typecasts, no hay manera de crear un campo de cumplir con dichos requisitos, ni hay ninguna manera de encasillada un campo. Un remedio para esto puede ser la creación de un ICloneable (Of T Como ICloneable (Of T)), que contiene un método "clon" que devuelve t, y un método "Self", que también devuelve T (Por lo tanto, un campo que sostiene una " ICloneable de Foo" se podía acceder a través de Foo como el 'método de auto'). Un poco de cuidado se necesitaría para hacer que todo esto funcione, pero el patrón debe ser bastante agradable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top