Pregunta
Si una clase ICloneable
implementado, lo que quiere decir eso?
Solución
Eso es tiene la href="http://msdn.microsoft.com/en-us/library/system.icloneable.clone.aspx" rel="nofollow"> IClonable.Clone
método . La documentación dice que el método está destinado a los objetos de la copia. Las notas de la documentación específica que el clon puede ser profunda o menos profunda. También se observa el tipo resultante debe ser del mismo tipo que el objeto que se clona, ??pero no hay garantía en el sistema de tipos que realmente es así.
Para resumir, no ofrece mucho promesas duros, pero la intención es crear clones independientes.
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.