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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top