96

Dictionary.Addメソッドとインデクサーの違いは何Dictionary[key] = valueですか?

4

5 に答える 5

160

追加-> 項目がディクショナリに既に存在する場合、ディクショナリに項目を追加し、例外がスローされます。

インデクサーまたはDictionary[Key]=> Add または Update。キーがディクショナリに存在しない場合は、新しい項目が追加されます。キーが存在する場合、値は新しい値で更新されます。


dictionary.addディクショナリに新しい項目を追加dictionary[key]=valueし、キーに対してディクショナリ内の既存のエントリに値を設定します。キーが存在しない場合、(インデクサー)はディクショナリに項目を追加します。

Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("Test", "Value1");
dict["OtherKey"] = "Value2"; //Adds a new element in dictionary 
Console.Write(dict["OtherKey"]);
dict["OtherKey"] = "New Value"; // Modify the value of existing element to new value
Console.Write(dict["OtherKey"]);

上記の例では、最初dict["OtherKey"] = "Value2";に辞書に新しい値が存在しないため追加し、2 番目に値を新しい値に変更します。

于 2012-07-19T09:05:41.410 に答える
34

Dictionary.Addキーがすでに存在する場合は例外をスローします。[]アイテムの設定に使用した場合はそうではありません(読み取りのためにアクセスしようとするとそうなります)。

x.Add(key, value); // will throw if key already exists or key is null
x[key] = value; // will throw only if key is null
var y = x[key]; // will throw if key doesn't exists or key is null
于 2012-07-19T09:08:15.373 に答える
17

のドキュメントAddはこれを非常に明確にしています。

Itemに存在しないキーの値を設定することにより、プロパティを使用して新しい要素を追加することもできDictionary(Of TKey, TValue)ます。たとえば、myCollection[myKey] = myValue(Visual Basic ではmyCollection(myKey) = myValue)。ただし、指定したキーが に既に存在する場合Dictionary(Of TKey, TValue)、Item プロパティを設定すると古い値が上書きされます。対照的に、Add指定されたキーを持つ値が既に存在する場合、メソッドは例外をスローします。

Item(プロパティはインデクサーに対応することに注意してください。)

于 2012-07-19T09:09:43.390 に答える
6

キーがディクショナリに存在しない場合の動作は同じです。どちらの場合もアイテムが追加されます。

キーがすでに存在する場合、動作は異なります。 dictionary[key] = valueキーにマップされた値を更新しますが、dictionary.Add(key, value)代わりに ArgumentException をスローします。

于 2012-07-19T09:08:31.687 に答える
-1

dictionary.addディクショナリに項目を追加し、dictionary[key]=value既存のキーに値を割り当てます。

于 2012-07-19T09:06:49.443 に答える