В чем разница между методом Dictionary.Add
и индексом Dictionary[key] = value
?
Разница словаря. Add vs Dictionary [ключ] = значение
Ответ 1
Добавить → Добавляет элемент в словарь, если элемент уже существует в словаре, будет выбрано исключение.
Индексатор или Dictionary[Key]
= > Добавить или обновить. Если ключ не существует в словаре, будет добавлен новый элемент. Если ключ существует, значение будет обновляться с новым значением.
dictionary.add
добавит новый словарь в словарь, dictionary[key]=value
установит значение для существующей записи в словаре против ключа. Если ключ отсутствует, то он (indexer) добавит элемент в словарь.
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";
добавит новое значение в словаре, потому что оно не существует, и, во-вторых, оно изменит значение на New Value.
Ответ 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
Ответ 3
Документация для Add
делает это очень ясным, я чувствую:
Вы также можете использовать свойство
Item
, чтобы добавить новые элементы, установив значение ключа, которого нет вDictionary(Of TKey, TValue)
; например,myCollection[myKey] = myValue
(в Visual Basic,myCollection(myKey) = myValue
). Однако, если указанный ключ уже существует вDictionary(Of TKey, TValue)
, установка свойства Item перезаписывает старое значение. Напротив, методAdd
генерирует исключение, если значение с указанным ключом уже существует.
(Обратите внимание, что свойство Item
соответствует указателю.)
Всегда стоит посоветоваться с документацией, прежде чем задавать вопрос...
Ответ 4
Поведение идентично, если ключ не существует в словаре: элемент будет добавлен в обоих случаях.
Поведение отличается, когда ключ уже существует. dictionary[key] = value
будет обновлять значение, сопоставленное с ключом, тогда как dictionary.Add(key, value)
вместо этого выдает исключение ArgumentException.
Ответ 5
dictionary.add
добавить элемент в словарь, тогда как dictionary[key]=value
присваивает значение уже существующему ключу.