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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top