Domanda

Quando si tratta di una raccolta di coppie chiave / valore v'è alcuna differenza tra utilizzando il suo metodo add () e lo assegna direttamente?

Per esempio, un HtmlGenericControl avrà un Attributi Collezione:

var anchor = new HtmlGenericControl("a");

// These both work:
anchor.Attributes.Add("class", "xyz");
anchor.Attributes["class"] = "xyz";

E 'puramente una questione di preferenza, o c'è un motivo per fare uno o l'altro?

È stato utile?

Soluzione

Si sono equivalenti per l'uso, in questo caso, l'esecuzione di questo:

anchor.Attributes["class"] = "xyz";

In realtà questo chiama internamente:

anchor.Attributes.Add("class", "xyz");

Nel AttributeCollection il setter this[string key] assomiglia a questo:

public string this[string key]
{
  get { }
  set { this.Add(key, value); }
}

Quindi, per rispondere alla domanda, nel caso di AttributeCollection , è solo una questione di preferenza. Tenete a mente, questo non è vero per altri tipi di raccolta, ad esempio Dictionary<T, TValue>. In questo caso sarebbe ["class"] = "xyz" aggiornare o impostare il valore, in cui .Add("class", "xyz") (se già aveva una voce di "class") sarebbe lanciare un errore voce duplicata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top