Dictionary.Addメソッドとインデクサーの違いは何Dictionary[key] = valueですか?
5 に答える
追加-> 項目がディクショナリに既に存在する場合、ディクショナリに項目を追加し、例外がスローされます。
インデクサーまたは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 番目に値を新しい値に変更します。
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
のドキュメントAddはこれを非常に明確にしています。
Itemに存在しないキーの値を設定することにより、プロパティを使用して新しい要素を追加することもできDictionary(Of TKey, TValue)ます。たとえば、myCollection[myKey] = myValue(Visual Basic ではmyCollection(myKey) = myValue)。ただし、指定したキーが に既に存在する場合Dictionary(Of TKey, TValue)、Item プロパティを設定すると古い値が上書きされます。対照的に、Add指定されたキーを持つ値が既に存在する場合、メソッドは例外をスローします。
Item(プロパティはインデクサーに対応することに注意してください。)
キーがディクショナリに存在しない場合の動作は同じです。どちらの場合もアイテムが追加されます。
キーがすでに存在する場合、動作は異なります。 dictionary[key] = valueキーにマップされた値を更新しますが、dictionary.Add(key, value)代わりに ArgumentException をスローします。
dictionary.addディクショナリに項目を追加し、dictionary[key]=value既存のキーに値を割り当てます。