Dictionary<X, Dictionary<Y, Z>>
От: _NN_ www.nemerleweb.com
Дата: 17.10.15 19:15
Оценка:
Стал замечать , что нужно довольно часто иметь такую структуру данных.
Использование простого Dictionary не очень удобно, т.к. добавление или изменение требует нескольких TryGetValue и Add в случае если нет элементов.
Dictionary<Y,Z> yz;
if (!d.TryGetValue(x, out yz)) { yz = d[x] = new Dictionary<Y,Z>(); }

Z z;
if (!yz.TryGetValue(y, out z)) { z = yz[y] = new Z(); }

z.CallMethod();


На данный момент добавились методы расширения GetOrAdd и код легко переписывается в :
d.GetOrAdd(x, _ => new Dictionary<Y,Z>()).GetOrAdd(y, _ => new Z()).CallMethod();


Однако это начинает утомлять.
В итоге подумываю над созданием более удобного класса NestedDictionary<K,V,W> и возможно далее NestedDictionary<K,V,W,X> ...

Что делаете в таких случаях ?
Есть ли готовый вариант для этого ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.