Prestazioni per il mio Collection.add () per. La mia collezione [ “chiave”]
-
22-09-2019 - |
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?
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.