Присвоение нового значения Hashtable без использования метода Add - PullRequest
4 голосов
/ 25 марта 2009

Чтобы добавить новое значение в хэш-таблицу dotnet, которую я всегда использовал:

myHashtable.Add(myNewKey, myNewValue);

но я только что натолкнулся на некоторый код, который делает следующее:

myHashTable[myNewKey] = myNewValue; 

Есть ли разница между этими двумя методами?

Ответы [ 3 ]

14 голосов
/ 25 марта 2009

Чтобы немного исправить ответ Сергея ...

  • Add действительно выдаст исключение, если ключ уже существует.
  • Использование индексатора в качестве установщика не вызовет исключение (если вы не укажете нулевой ключ).
  • Использование индексатора в качестве получателя вызовет исключение, если ключ не существует и если вы используете универсальный IDictionary<TKey,TValue>. В неуниверсальных реализациях IDictionary (например, Hashtable) вы получите нулевую ссылку. Вы не можете использовать нулевой ключ ни для одного из них - вы получите ArgumentNullException.
3 голосов
/ 25 марта 2009

первый вызовет исключение, если уже был элемент с данным ключом, а второй вызовет исключение, если не было элемента с таким ключом

0 голосов
/ 25 марта 2009

Разница заключается в обработке повторяющихся значений.

myHashtable.Add () создает исключение ArgumentException, если HashTable уже содержит элемент с вашим ключом. myHashTable [myNewKey] заменяет старое значение новым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...