C#でコレクションオブジェクトをコピーするのが非常に面倒であることに驚かされました。特に、深いコピーが必要な場合はそうです。.NetがJavaclone()ルートを使用しなかった適切な設計上の理由はありますか?また、C#/。Netで見逃した同等のパラダイムはありますか?
質問する
157 次
1 に答える
7
浅いコピー
浅いコピーの場合、.NETはObject.MemberwiseCloneを提供します。
ディープコピー
ディープコピーの場合、MicrosoftはカスタムCopy
メソッドを実装することをお勧めします。ディープコピーには、クラス自体に関する複雑な知識が必要です。実際、特定のクラスでは、複数の異なるタイプのディープコピーを作成することも理にかなっている場合があります。したがって、この目的のための事前定義されたメソッドまたはインターフェースはありません。
しかし、ICloneableインターフェースはどうですか?
ICloneableインターフェースがあり、その目的はJavaのにほぼ対応している可能性がありますObject.clone
。ただし、Microsoftは、インターフェイスを正しく実装するために必要なコピーの浅さまたは深さを指定していないため、使用しないことをお勧めします。
于 2013-01-10T12:04:53.197 に答える