4

を実装するカスタム クラスを作成していますIDictionaryが、どうすればよいかわかりませんCopyTo。各要素をターゲット配列にコピーするだけ (浅いコピー) にするか、各要素のコピー/クローンを作成してからターゲット配列に配置する (ディープ コピー) べきですか?

4

1 に答える 1

5

実装はコントラクトによって定義されていませんが、すべてのジェネリック コレクションは浅いコピーを行うように見えます ( http://referencesource.microsoft.com/#q=List.CopyToを参照)。object実装の一部となる任意の をディープ コピーする定義された方法がないため、これは理にかなっていCopyToます。

シナリオによって異なります。このメソッドをまったく使用するつもりがない場合は、実装せずにNotSupportedException. 他のユーザーがあなたのコレクションを使用する場合は、浅いコピーを実装して、標準の .NET ライブラリに合わせます。ディープ コピー メソッドが必要な場合は、別のメソッドとして追加します (場合によっては を実装しますICloneable)。

于 2015-06-09T02:35:18.840 に答える