Если у меня есть ConcurrentDictionary
и я хочу использовать функцию Add()
, мне нужно привести к IDictionary
:
var cd = new ConcurrentDictionary<int, int>();
cd.Add(1, 1); // Compile error: does not contain a definition for 'Add'
IDictionary<int, int> id = cd;
id.Add(1, 1); // Works
Вопрос ConcurrentDictionary и IDictionary говорит мне, что это потому, что ConcurrentDictionary
реализует IDictionary
явно, используя частные методы.
Мой вопрос: Почему ConcurrentDictionary
реализовано именно так? В чем преимущество сокрытия использования реализованного интерфейса?