2012-07-19 14 views

Respuesta

63

Agregar -> Agrega un elemento al diccionario si el elemento ya existe en el diccionario se lanzará una excepción.

Indexador o Dictionary[Key] =>Agregar o actualizar. Si la clave no existe en el diccionario, se agregará un nuevo elemento. Si la clave existe, el valor se actualizará con el nuevo valor.


dictionary.add añadirá un nuevo elemento al diccionario, dictionary[key]=value establecerá un valor a una entrada existente en el diccionario contra una llave. Si la clave no está presente, entonces (indexador) agregará el elemento en el diccionario.

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"]); 

En el ejemplo anterior, en primer lugar dict["OtherKey"] = "Value2"; añadirá un nuevo valor en el diccionario, ya que no existe, y en segundo lugar que se va a modificar el valor a nuevo valor.

+0

Y cuando la clave no existe en 'dictionar [clave ] = valor'? –

+0

@HenkHolterman, se agregará en el diccionario con la nueva clave – Habib

+0

Thaks Habib. pero podemos agregar una nueva clave con dictionar [newkey] = value. ¿Cuál es el mejor? – rsg

0

dictionary.add agregue un elemento al diccionario, mientras que dictionary[key]=value asigna un valor a una clave ya existente.

+0

'dictionary [key] = value' agrega la clave y el valor si la clave no existe. así que es un ** Agregar o actualizar ** forma –

25

Dictionary.Add arroja una excepción si la clave ya está presente. [] cuando se usa para configurar un elemento no lo hace (lo hace si intenta acceder para leerlo).

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 
+0

Gracias Xanatos. – rsg

2

El comportamiento es idéntico cuando la clave no existe en el diccionario: el elemento se agregará en ambos casos.

El comportamiento difiere cuando la clave ya existe. dictionary[key] = value actualizará el valor asignado a la clave, mientras que dictionary.Add(key, value) arrojará una excepción ArgumentException.

16

La documentación para Add hace esto muy claro, me siento:

También se puede utilizar la propiedad Item añadir nuevos elementos estableciendo el valor de una clave que no existe en el Dictionary(Of TKey, TValue); por ejemplo, myCollection[myKey] = myValue (en Visual Basic, myCollection(myKey) = myValue). Sin embargo, si la clave especificada ya existe en el Dictionary(Of TKey, TValue), establecer la propiedad Item sobrescribe el valor anterior. Por el contrario, el método Add arroja una excepción si ya existe un valor con la clave especificada.

(Tenga en cuenta que la propiedad Item se corresponde con el indexador.)

Siempre es conveniente consultar la documentación antes de preguntar ...

Cuestiones relacionadas