[解決済み] .NET汎用Dictionary<string, T>をクローン/ディープコピーする最良の方法は何ですか?
2022-02-24 09:45:19
質問
一般的な辞書を手に入れた
Dictionary<string, T>
のClone()を作りたいのですが、何か提案はありますか?
どのように解決するのですか?
では、.NET2.0の回答です。
値をクローンする必要がない場合は、既存の IDictionary を受け取る Dictionary へのコンストラクタのオーバーロードを使用できます。(比較対象は既存の辞書の比較対象として指定することも可能です)。
もし する は、値をクローンする必要があるので、次のようなものを使うことができます。
public static Dictionary<TKey, TValue> CloneDictionaryCloningValues<TKey, TValue>
(Dictionary<TKey, TValue> original) where TValue : ICloneable
{
Dictionary<TKey, TValue> ret = new Dictionary<TKey, TValue>(original.Count,
original.Comparer);
foreach (KeyValuePair<TKey, TValue> entry in original)
{
ret.Add(entry.Key, (TValue) entry.Value.Clone());
}
return ret;
}
に依存しています。
TValue.Clone()
もちろん、それなりに深いクローンであることは間違いない。
関連
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] リスト<T>をランダム化する
-
[解決済み] 汎用クラスやメソッドのメンバからTの型を取得する方法
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である
-
[解決済み] .NETで利用できる読み取り専用の汎用辞書はありますか?