В чем разница между методом 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 присваивает значение уже существующему ключу.