私がいつも使用してきた dotnet Hashtable に新しい値を追加するには、次のようにします。
myHashtable.Add(myNewKey, myNewValue);
しかし、代わりに次のことを行うコードに出くわしました:
myHashTable[myNewKey] = myNewValue;
2つの方法に違いはありますか?
セルゲイの答えを少し修正するには...
Add
キーがすでに存在する場合、実際に例外がスローされます。IDictionary<TKey,TValue>
。非ジェネリックなIDictionary
実装 (例: Hashtable
) では、null 参照が返されます。ただし、どちらにも null キーを使用することはできませんArgumentNullException
。1 つ目は、指定されたキーを持つアイテムが既に存在する場合に例外をスローし、2 つ目は、そのようなキーを持つアイテムが存在しない場合に例外をスローします。
違いは、重複する値の処理にあります。
myHashtable.Add()は、HashTableにキーの要素がすでに含まれている場合、ArgumentExceptionをスローします。 myHashTable [myNewKey]は、古い値を新しい値に置き換えます。