Производительность для myCollection.Add () против myCollection ["key"] - PullRequest
1 голос
/ 24 марта 2010

При работе с набором пар ключ / значение есть какая-либо разница между использованием метода Add () и его непосредственным назначением?

Например, HtmlGenericControl будет иметь коллекцию атрибутов:

var anchor = new HtmlGenericControl("a");

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

Это чисто вопрос предпочтений или есть причина для того или другого?

1 Ответ

4 голосов
/ 24 марта 2010

Они эквивалентны для вашего использования, в данном случае, запустив это:

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

На самом деле вызывает это внутренне:

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

В AttributeCollection сеттер this[string key] выглядит следующим образом:

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

Итак, чтобы ответить на вопрос, в случае AttributeCollection, это просто вопрос предпочтений. Имейте в виду, что это не так для других типов коллекций, например Dictionary<T, TValue>. В этом случае ["class"] = "xyz" обновит или установит значение, где .Add("class", "xyz") (если у него уже есть запись "class") выдаст ошибку повторяющейся записи.

...