关于c#:Dictionary.Add与Dictionary [key] = value的区别

Difference of Dictionary.Add vs Dictionary[key]=value

本问题已经有最佳答案,请猛点这里访问。

Dictionary.Add方法和索引器Dictionary[key] = value有什么区别?


添加->向字典添加项如果字典中已存在项,则将引发异常。

indexer或Dictionary[Key]=>添加或更新。如果字典中不存在该键,则将添加新项。如果该键存在,则该值将用新值更新。

dictionary.add将向字典中添加一个新项,dictionary[key]=value将针对键为字典中的现有条目设置一个值。如果该键不存在,则它(索引器)将在字典中添加该项。

1
2
3
4
5
6
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";将在字典中添加一个新值,因为它不存在;其次,它将把值修改为新值。


如果密钥已经存在,dictionary.add将抛出异常。当用于设置项目时,[]不会(如果您试图访问它进行读取,则会)。

1
2
3
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


Add的文档非常清楚,我觉得:

You can also use the Item property to add new elements by setting the value of a key that does not exist in the Dictionary(Of TKey, TValue); for example, myCollection[myKey] = myValue (in Visual Basic, myCollection(myKey) = myValue). However, if the specified key already exists in the Dictionary(Of TKey, TValue), setting the Item property overwrites the old value. In contrast, the Add method throws an exception if a value with the specified key already exists.

(注意,Item属性对应于索引器。)

在问问题之前,一定要查阅文档…


当字典中不存在键时,行为是相同的:两种情况下都将添加该项。

当键已经存在时,行为会有所不同。dictionary[key] = value将更新映射到键的值,而dictionary.Add(key, value)将改为抛出argumentexception。


dictionary.add向字典中添加一个项,而dictionary[key]=value向已经存在的键赋值。