What is the difference between the Dictionary.Add
method and the indexer Dictionary[key] = value
?
In Dictionary, the key cannot be null, but value can be. In Dictionary, key must be unique. Duplicate keys are not allowed if you try to use duplicate key then compiler will throw an exception. In Dictionary, you can only store same types of elements.
Dictionary<string, int> TotalMarks = new Dictionary<string, int>(); TotalMarks. DefaultValue = 0; Console.
Syntax: public bool ContainsKey (TKey key); Here, the key is the Key which is to be located in the Dictionary. Return Value: This method will return true if the Dictionary contains an element with the specified key otherwise, it returns false.
A dictionary, also called an associative array, is a collection of unique keys and a collection of values, where each key is associated with one value. Retrieving and adding values is very fast. Dictionaries take more memory because for each value there is also a key.
Add -> Adds an item to the dictionary if item already exists in the dictionary an exception will be thrown.
Indexer or Dictionary[Key]
=> Add Or Update. If the key doesn't exist in the dictionary, a new item will be added. If the key exists then the value will be updated with the new value.
dictionary.add
will add a new item to the dictionary, dictionary[key]=value
will set a value to an existing entry in the dictionary against a key. If the key is not present then it (indexer) will add the item in the dictionary.
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"]);
In the above example, in first place dict["OtherKey"] = "Value2";
will add a new value in the dictionary because it doesn't exist, and in second place it will modify the value to New Value.
Dictionary.Add
throws an exception if the key is already present. []
when used for setting an item doesn't (it does if you try to access it for read).
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
The documentation for Add
makes this very clear, I feel:
You can also use the
Item
property to add new elements by setting the value of a key that does not exist in theDictionary(Of TKey, TValue)
; for example,myCollection[myKey] = myValue
(in Visual Basic,myCollection(myKey) = myValue
). However, if the specified key already exists in theDictionary(Of TKey, TValue)
, setting the Item property overwrites the old value. In contrast, theAdd
method throws an exception if a value with the specified key already exists.
(Note that the Item
property corresponds to the indexer.)
The behavior is identical when the key does not exist in the dictionary: the item will be added in both cases.
The behavior differs when the key already exists. dictionary[key] = value
will update the value mapped to the key, while dictionary.Add(key, value)
will instead throw an ArgumentException.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With