どのインターネットには想像もつかなコピーの値は、キーから辞書を他のクライアントまで、フルのC#?

StackOverflow https://stackoverflow.com/questions/81552

  •  09-06-2019
  •  | 
  •  

質問

あるという事を辞書で調べました。AddRange()メソッドがあります。なんだろうけど、日本人により良い方法をコピーしたい項目を他の辞書を使わずにforeachループを実行します。

を使用しています。ョンにします。クラスを提供します。.辞書です。この理するものとします。純2.0にアクセスしてください。

役に立ちましたか?

解決

あるなら間違いないために/foreachループを実行します。ことになるすべての仮想AddRange方法に思います。

のみに懸念の思いはメモリ割り当て行動で追加大きいエントリ数が複数の再配、再ハッシュ.が増大能力を既存の辞書に指定された金額です。きないほうがよい配置の新しい辞書で十分な容量の両方の現在のものもあるんだループへの負荷の少なくともその一人です。

他のヒント

あの Dictionary コンストラクタの次の Dictionary.

めんキャストで IDictionary, があり Add() 過負荷のかかる KeyValuePair<TKey, TValue>.だforeachを使用しました。

var Animal = new Dictionary<string, string>();

逃すことができ、既存の動物辞書のコンストラクタです。

Dictionary<string, string> NewAnimals = new Dictionary<string, string>(Animal);

しかし、この拡張手法を辞書で調べました。このこないディープコピーでも可能です。

public static Dictionary<TKey, TValue> DeepCopy<TKey,TValue>(this Dictionary&lt;TKey, TValue> dictionary)
        {
            Dictionary<TKey, TValue> d2 = new Dictionary<TKey, TValue>();

            bool keyIsCloneable = default(TKey) is ICloneable;
            bool valueIsCloneable = default(TValue) is ICloneable;

            foreach (KeyValuePair<TKey, TValue> kvp in dictionary)
            {
                TKey key = default(TKey);
                TValue value = default(TValue);
                if (keyIsCloneable)
                {
                    key = (TKey)((ICloneable)(kvp.Key)).Clone();
                }

                else
                {
                    key = kvp.Key;
                }

                if (valueIsCloneable)
                {
                    value = (TValue)((ICloneable)(kvp.Value)).Clone();
                }

                else
                {
                    value = kvp.Value;
                }

                d2.Add(key, value);
            }

            return d2;
        }

れば対応二つの既存オブジェクトは、取得マイルのCopyTo方法 http://msdn.microsoft.com/en-us/library/cc645053.aspx

利用には、追加の方法その他のコレクション(受信機)を吸収しやすくなっています。

う必要はありません、なぜなの辞書(辞書)(このようにageektrapped).

いを行っていきたいと考えてい浅いコピーまたはディープコピー?(つまり、辞書を指す同参考文献や新しいコピーのオブジェクト内の新しい辞書は?)

を処理しなければいけない、 新しい 辞書を指 新しい オブジェと思うけ、そのようなブロードバンドルータを使って foreach.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top