Основная причина, которую выбрасывает словарь, - политическая - было несколько вариантов сохранения эффективности и простоты использования. Он фактически предоставляет метод (TryGetValue), который наглядно демонстрирует, что утверждения о предполагаемой «неспособности» вернуть разумное значение являются ложными. Однако TryGetValue вынуждает явно неуклюжий синтаксис делать именно то, что индексатор мог бы легко сделать.
Шаблоны C # обеспечивают простой способ создания отдельных реализаций для семантики ссылок и значений, и есть два других средства для плавной обработки отсутствующих объектов с семантикой значений, которые используются шаблонами и некоторыми операторами (по умолчанию и допускают обнуляемость). Это означает, что не было разумной причины нарушать семантику хеш-таблицы.
Это длительная политическая борьба между академическим представлением о коллекции, которая настаивает на том, что каждый должен пройти проверку «есть ли у вас», и фактическим фактом, что такая искусственная процедура неэффективна и нарушает безопасность потоков - в принципе ( это нарушает поточную безопасность других безопасных реализаций, делая доступ не атомарным).