Производительность myCollection.Add() по сравнению с.мояКоллекция[“ключ”]
-
22-09-2019 - |
Вопрос
Есть ли разница между использованием метода Add() и его прямым назначением при работе с коллекцией пар ключ/значение?
Например, HtmlGenericControl будет иметь коллекцию атрибутов:
var anchor = new HtmlGenericControl("a");
// These both work:
anchor.Attributes.Add("class", "xyz");
anchor.Attributes["class"] = "xyz";
Это просто вопрос предпочтений или есть причина делать то или иное?
Решение
Они эквивалентны для вашего использования, в данном случае выполните следующее:
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"
запись) выдаст двойную ошибку записи.