96

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

4

5 回答 5

160

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

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


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

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";将在字典中添加一个新值,因为它不存在,然后将其修改为新值。

于 2012-07-19T09:05:41.410 回答
34

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
于 2012-07-19T09:08:15.373 回答
17

的文档说明了Add这一点,我觉得:

您还可以使用该Item属性通过设置 ; 中不存在的键的值来添加新元素Dictionary(Of TKey, TValue)。例如,myCollection[myKey] = myValue(在 Visual Basic 中,myCollection(myKey) = myValue)。但是,如果指定的键已存在于 中Dictionary(Of TKey, TValue),则设置 Item 属性会覆盖旧值。相反,Add如果具有指定键的值已存在,则该方法将引发异常。

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

于 2012-07-19T09:09:43.390 回答
6

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

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

于 2012-07-19T09:08:31.687 回答
-1

dictionary.add将项目添加到字典中,同时dictionary[key]=value将值分配给已经存在的键。

于 2012-07-19T09:06:49.443 回答