5

私がいつも使用してきた dotnet Hashtable に新しい値を追加するには、次のようにします。

myHashtable.Add(myNewKey, myNewValue);

しかし、代わりに次のことを行うコードに出くわしました:

myHashTable[myNewKey] = myNewValue; 

2つの方法に違いはありますか?

4

3 に答える 3

14

セルゲイの答えを少し修正するには...

  • Addキーがすでに存在する場合、実際に例外がスローされます。
  • インデクサーをセッターとして使用しても、例外はスローされません(null キーを指定しない限り)。
  • キーが存在せず、ジェネリックを使用している場合、ゲッターとしてインデクサーを使用すると例外がスローされますIDictionary<TKey,TValue>。非ジェネリックなIDictionary実装 (例: Hashtable) では、null 参照が返されます。ただし、どちらにも null キーを使用することはできませんArgumentNullException
于 2009-03-25T16:19:40.207 に答える
3

1 つ目は、指定されたキーを持つアイテムが既に存在する場合に例外をスローし、2 つ目は、そのようなキーを持つアイテムが存在しない場合に例外をスローします。

于 2009-03-25T16:16:32.117 に答える
0

違いは、重複する値の処理にあります。

myHashtable.Add()は、HashTableにキーの要素がすでに含まれている場合、ArgumentExceptionをスローします。 myHashTable [myNewKey]は、古い値を新しい値に置き換えます。

于 2009-03-25T16:21:33.540 に答える