ICloneable インターフェイス


クローン作成をサポートします。クローン作成とは、既存のインスタンスと同じ値で、クラスの新しいインスタンスを作成することです。Supports cloning, which creates a new instance of a class with the same value as an existing instance.

public interface class ICloneable
public interface ICloneable
public interface ICloneable
type ICloneable = interface
type ICloneable = interface
Public Interface ICloneable


ICloneableインターフェイスを使用すると、既存のオブジェクトのコピーを作成する、カスタマイズされた実装を提供できます。The ICloneable interface enables you to provide a customized implementation that creates a copy of an existing object. インターフェイスには、メソッドである ICloneable 1 つのメンバーが含まれてい Clone ます。これは、によって提供されるもの以外の複製サポートを提供するためのものです Object.MemberwiseCloneThe ICloneable interface contains one member, the Clone method, which is intended to provide cloning support beyond that supplied by Object.MemberwiseClone. 複製、ディープと浅いコピー、および例の詳細については、メソッドを参照してください Object.MemberwiseCloneFor more information about cloning, deep versus shallow copies, and examples, see the Object.MemberwiseClone method.

注意 (実装者)

インターフェイスでは、 ICloneable メソッドの実装が Clone() 現在のオブジェクトインスタンスのコピーを返す必要があります。The ICloneable interface simply requires that your implementation of the Clone() method return a copy of the current object instance. 複製操作で詳細コピー、浅いコピー、またはその間で何かを実行するかどうかは指定されません。It does not specify whether the cloning operation performs a deep copy, a shallow copy, or something in between. また、元のインスタンスのすべてのプロパティ値を新しいインスタンスにコピーする必要もありません。Nor does it require all property values of the original instance to be copied to the new instance. たとえば、メソッドは、 Clone() プロパティを除くすべてのプロパティの簡易コピーを実行します IsReadOnly 。複製されたオブジェクトでは、このプロパティ値は常にに設定され false ます。For example, the Clone() method performs a shallow copy of all properties except the IsReadOnly property; it always sets this property value to false in the cloned object. の呼び出し元 Clone() は、予測可能な複製操作を実行するメソッドに依存することはできないため、 ICloneable パブリック api で実装しないことをお勧めします。Because callers of Clone() cannot depend on the method performing a predictable cloning operation, we recommend that ICloneable not be implemented in public APIs.



現在のインスタンスのコピーである新しいオブジェクトを作成します。Creates a new object that is a copy of the current instance.