Если Dictionary
напрямую подвергается перегрузке Add(KeyValuePair<TKey,TValue>)
, это предполагает, что, если у кого-то есть KeyValuePair<TKey,TValue>
(например, полученный при перечислении другого словаря), лучше передать его такому методу, чем читать свойства Key
и Value
и передать их отдельно. На самом деле, верно обратное: передача всей структуры методу Add
, который затем должен был ее разложить и передать ее члены с перегрузкой дискретного параметра, была бы менее эффективной, чем разложение структуры на ее элементы и передача их отдельно.
Обратите внимание, что если Dictionary
хранит вещи внутренне в массиве типа структуры, который имеет KeyValuePair<TKey,TValue>
в качестве поля (не свойства), то код выглядит так:
for var item in Dict1
{
Dict2.Add(item);
}
может быть более эффективным, чем
for var item in Dict1
{
Dict2.Add(item.Key, Item.Value);
}
но поскольку Dictionary
будет разлагать любой переданный KeyValuePair
, нет причин поощрять прежний стиль кода.