Performance pour mon Collection.add () à. ma collection [ « touche »]
-
22-09-2019 - |
Question
En traitant avec une collection de paires clé / valeur est-il une différence entre l'utilisation de sa méthode Add () et en attribuant directement il?
Par exemple, un HtmlGenericControl aura une Attributs Collection:
var anchor = new HtmlGenericControl("a");
// These both work:
anchor.Attributes.Add("class", "xyz");
anchor.Attributes["class"] = "xyz";
est-il purement une question de préférence, ou est-il une raison de faire l'un ou l'autre?
La solution
Ils sont équivalents pour votre usage, dans ce cas, l'exécution de ce:
anchor.Attributes["class"] = "xyz";
En fait, cette demande interne:
anchor.Attributes.Add("class", "xyz");
Dans AttributeCollection
le poseur de this[string key]
ressemble à ceci:
public string this[string key]
{
get { }
set { this.Add(key, value); }
}
Donc, pour répondre à la question, dans le cas de AttributeCollection
, il est juste une question de préférence. Gardez à l'esprit, ce n'est pas vrai pour d'autres types de collections, par exemple Dictionary<T, TValue>
. Dans ce cas ["class"] = "xyz"
mettrait à jour ou définir la valeur, où .Add("class", "xyz")
(si elle avait déjà une entrée "class"
) jetterait une erreur d'entrée en double.