Rendimiento para mi Collection.Add () a. mi Colección [ “clave”]
-
22-09-2019 - |
Pregunta
Cuando se trata de una colección de pares clave / valor ¿hay alguna diferencia entre el uso de su método Add () y directamente asignándole?
Por ejemplo, un HtmlGenericControl tendrá una colección de atributos:
var anchor = new HtmlGenericControl("a");
// These both work:
anchor.Attributes.Add("class", "xyz");
anchor.Attributes["class"] = "xyz";
¿Es puramente una cuestión de preferencia, o hay una razón para hacer una o la otra?
Solución
Son equivalentes para su uso, en este caso, la ejecución de este:
anchor.Attributes["class"] = "xyz";
En realidad llama a esto internamente:
anchor.Attributes.Add("class", "xyz");
En AttributeCollection
las miradas this[string key]
setter como esto:
public string this[string key]
{
get { }
set { this.Add(key, value); }
}
Así que para responder a la pregunta, en el caso de AttributeCollection
, que es sólo una cuestión de preferencia. Tenga en cuenta que esto no es cierto para otros tipos de colección, por ejemplo Dictionary<T, TValue>
. En este caso ["class"] = "xyz"
actualizaría o establecer el valor, donde .Add("class", "xyz")
(si ya tenía una entrada "class"
) arrojaría un error de entrada duplicada.