Performance für meine Collection.add () zu. meine Sammlung [ „key“]
-
22-09-2019 - |
Frage
Wenn Sie mit einer Sammlung von Schlüssel / Wert-Paare zu tun gibt es einen Unterschied zwischen seiner Add () Methode verwendet wird und es direkt zuweisen?
Zum Beispiel kann ein Htmlgenericcontrol wird eine haben Attribute Collection:
var anchor = new HtmlGenericControl("a");
// These both work:
anchor.Attributes.Add("class", "xyz");
anchor.Attributes["class"] = "xyz";
Ist es rein eine Frage der Präferenz, oder gibt es einen Grund für das eine oder das andere zu tun?
Lösung
Sie sind gleichwertig für Ihren Einsatz, in diesem Fall läuft diese:
anchor.Attributes["class"] = "xyz";
Eigentlich nennt dies intern:
anchor.Attributes.Add("class", "xyz");
In AttributeCollection
die this[string key]
Setter sieht wie folgt aus:
public string this[string key]
{
get { }
set { this.Add(key, value); }
}
So die Frage, im Fall von AttributeCollection
zu beantworten, es ist nur eine Frage der Präferenz. Denken Sie daran, das ist nicht wahr für andere Sammlungstypen, zum Beispiel Dictionary<T, TValue>
. In diesem Fall ["class"] = "xyz"
würde den Wert aktualisieren oder setzen, wo .Add("class", "xyz")
(wenn es bereits einen Eintrag "class"
hat) würde einen doppelten Eintrag Fehler aus.