2

C#でコレクションオブジェクトをコピーするのが非常に面倒であることに驚かされました。特に、深いコピーが必要な場合はそうです。.NetがJavaclone()ルートを使用しなかった適切な設計上の理由はありますか?また、C#/。Netで見逃した同等のパラダイムはありますか?

4

1 に答える 1

7

浅いコピー

浅いコピーの場合、.NETはObject.MemberwiseCloneを提供します。

ディープコピー

ディープコピーの場合、MicrosoftはカスタムCopyメソッドを実装することをお勧めします。ディープコピーには、クラス自体に関する複雑な知識が必要です。実際、特定のクラスでは、複数の異なるタイプのディープコピーを作成することも理にかなっている場合があります。したがって、この目的のための事前定義されたメソッドまたはインターフェースはありません。

しかし、ICloneableインターフェースはどうですか?

ICloneableインターフェースがあり、その目的はJavaのにほぼ対応している可能性がありますObject.clone。ただし、Microsoftは、インターフェイスを正しく実装するために必要なコピーの浅さまたは深さを指定していないため、使用しないことをお勧めします。

于 2013-01-10T12:04:53.197 に答える