97 votes

Différence de Dictionary.Add vs Dictionary[key] = valeur

Quelle est la différence entre la méthode Dictionary.Add et l'indexeur Dictionary[key] = value?

0 votes

Je suis venu chercher car je m'inquiétais que les anciennes versions de C# pourraient nécessiter l'utilisation de .Add() pour ajouter des éléments, mais apparemment non.

161voto

Habib Points 93087

Ajouter -> Ajoute un élément au dictionnaire, si l'élément existe déjà dans le dictionnaire une exception sera déclenchée.

Indexeur ou Dictionnaire[Clé] => Ajouter ou Mettre à Jour. Si la clé n'existe pas dans le dictionnaire, un nouvel élément sera ajouté. Si la clé existe, alors la valeur sera mise à jour avec la nouvelle valeur.


dictionnaire.ajouter ajoutera un nouvel élément au dictionnaire, dictionnaire[clé]=valeur définira une valeur pour une entrée existante dans le dictionnaire en fonction d'une clé. Si la clé n'est pas présente, alors (indexeur) ajoutera l'élément dans le dictionnaire.

Dictionnaire dict = new Dictionnaire();
dict.Ajouter("Test", "Valeur1");
dict["AutreClé"] = "Valeur2"; // Ajoute un nouvel élément dans le dictionnaire 
Console.Write(dict["AutreClé"]);
dict["AutreClé"] = "Nouvelle Valeur"; // Modifie la valeur de l'élément existant en une nouvelle valeur
Console.Write(dict["AutreClé"]);

Dans l'exemple ci-dessus, en premier lieu dict["AutreClé"] = "Valeur2"; ajoutera une nouvelle valeur dans le dictionnaire car elle n'existe pas, et en deuxième lieu, elle modifiera la valeur en Nouvelle Valeur.

0 votes

Et quand la clé n'existe pas dans dictionar[key]=value ?

0 votes

@HenkHolterman, il sera ajouté dans le dictionnaire avec la nouvelle clé

0 votes

Merci Habib. mais nous pouvons ajouter une nouvelle clé avec dictionnaire[nouvelleclé]=valeur. Quelle est la meilleure façon?

34voto

xanatos Points 30513

Dictionary.Add lance une exception si la clé est déjà présente. [] lorsqu'il est utilisé pour définir un élément ne lance pas d'exception (mais le fera si vous essayez de l'accéder en lecture).

x.Add(key, value); // lancera une exception si la clé existe déjà ou si la clé est nulle
x[key] = value; // lancera une exception seulement si la clé est nulle
var y = x[key]; // lancera une exception si la clé n'existe pas ou si la clé est nulle

18voto

Jon Skeet Points 692016

La documentation de Add rend cela très clair, je trouve :

Vous pouvez également utiliser la propriété Item pour ajouter de nouveaux éléments en définissant la valeur d'une clé qui n'existe pas dans le Dictionnaire(Of TKey, TValue); par exemple, maCollection[maCle] = maValeur (en Visual Basic, maCollection(maCle) = maValeur). Cependant, si la clé spécifiée existe déjà dans le Dictionnaire(Of TKey, TValue), définir la propriété Item écrase l'ancienne valeur. En revanche, la méthode Add génère une exception si une valeur avec la clé spécifiée existe déjà.

(Notez que la propriété Item correspond à l'indexeur.)

6voto

cdhowie Points 62253

Le comportement est identique lorsque la clé n'existe pas dans le dictionnaire : l'élément sera ajouté dans les deux cas.

Le comportement diffère lorsque la clé existe déjà. dictionnaire[clé] = valeur mettra à jour la valeur associée à la clé, tandis que dictionnaire.Add(clé, valeur) lancera une ArgumentException.

-1voto

Jeeva Points 2748

dictionary.add ajoute un élément au dictionnaire tandis que dictionary[key]=value attribue une valeur à une clé existante.

2 votes

dictionnaire[clé]=valeur ajoute la clé et la valeur si la clé n'existe pas. C'est donc une façon Ajouter ou mettre à jour

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X