Информация об изменениях

Сообщение Re[7]: Dictionary<X, Dictionary<Y, Z>> от 18.10.2015 10:00

Изменено 18.10.2015 10:42 Serginio1

Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Здравствуйте, Serginio1, Вы писали:


S>>По уму нужно передавать в конструктор словаря конструктор значения по умолчанию.

S>>Тогда
S>> d.GetOrAdd(ключ) будет возвращать значение по умолчанию. И логика понятна.

EP>Либо тип-wrapper, у которого будет другой конструктор — так не будет оверхеда на хранение значения.

EP>Либо просто отдельная функция как уже выше предлагали, а-ля get_or_default(map, key, default).

Так есть же GetOrAdd Method в разных вариациях
Вот простейший

https://msdn.microsoft.com/en-us/library/ee378674(v=vs.110).aspx
Re[7]: Dictionary<X, Dictionary<Y, Z>>
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Здравствуйте, Serginio1, Вы писали:


S>>По уму нужно передавать в конструктор словаря конструктор значения по умолчанию.

S>>Тогда
S>> d.GetOrAdd(ключ) будет возвращать значение по умолчанию. И логика понятна.

EP>Либо тип-wrapper, у которого будет другой конструктор — так не будет оверхеда на хранение значения.

EP>Либо просто отдельная функция как уже выше предлагали, а-ля get_or_default(map, key, default).

Так есть же GetOrAdd Method в разных вариациях
Вот простейший

https://msdn.microsoft.com/en-us/library/ee378674(v=vs.110).aspx


Просто для не валуе типов нужна версия
https://msdn.microsoft.com/ru-ru/library/ee378677(v=vs.110).aspx

public TValue GetOrAdd(
    TKey key,
    Func<TKey, TValue> valueFactory
)


А с дефаултным конструктором значения код будет значительно короче, так как конструктор значения в основном всегда одинаков
То есть
Но по большому разница то не велика, если определить Func<TKey, TValue> как переменную


d.GetOrAdd(ключ)
d.GetOrAdd(ключ,Конструктор)