28

C# で辞書を浅いコピーする必要があります。

例えば:

Dictionary<int,int> flags = new Dictionary<int,int>();
flags[1] = 2;
flags[2] = 3;
flags[0] = 9001;
Dictionary<int,int> flagsn = flags.MemberwiseClone();

残念ながら、それは次のエラーを返しますobject.MemberwiseClone()' via a qualifier of type

これが何を意味するのか完全にはわかりません...辞書を浅くコピーする/上記のコードを修正する別の方法はありますか?

4

2 に答える 2

59

浅いコピーを取得するには、コンストラクターを使用するだけDictionary<TKey, TValue>ですIEnumerable<KeyValuePair<TKey, TValue>>。このコレクションを新しいインスタンスに追加します。

Dictionary<int, int> flagsn = new Dictionary<int, int>(flags);
于 2012-01-14T00:46:34.460 に答える
10

これは、タイプを明示的に記述する必要がない場合に私が見つけた一般的な方法です。これは、保守性の理由から私が好む方法です。

var ShallowCopy = OriginalDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
于 2012-03-14T15:29:48.873 に答える