Ответ 1
Здесь answer.
Основная причина Словарь бросает, что нет "ошибки", ценность, которая работает над любым V. Hashtable может возвращать null потому что ключ всегда является ссылкой тип.
Любая идея, почему это поведение отличается?
Здесь answer.
Основная причина Словарь бросает, что нет "ошибки", ценность, которая работает над любым V. Hashtable может возвращать null потому что ключ всегда является ссылкой тип.
Таким образом, не будет никакой двусмысленности между тем, когда значение словаря [ключ] сохраняет нулевое значение и когда ключ не существует. Hashtable [key] возвращает null, если он сохраняет значение null или ключ не существует.
Основная причина, по которой словарные броски являются политическими, - имеет несколько вариантов сохранения эффективности и удобства использования. Он фактически предоставляет метод (TryGetValue), который наглядно демонстрирует, что утверждения о предполагаемой "неспособности" вернуть разумную ценность ложны. TryGetValue, тем не менее, вынуждает явно неудобный синтаксис делать то, что мог сделать прожектор.
Шаблоны С# обеспечивают простой способ построения отдельных реализаций для ссылочной и семантической семантики и есть два других объекта для бесшовной обработки отсутствующих объектов с семантикой значений, которые используются tempates и некоторыми операторами (по умолчанию и с возможностью NULL). Это означает, что не было разумной причины разрушить семантику хэш-таблицы.
Это длительная политическая борьба между академическим понятием коллекции, которая настаивает на том, что каждый должен пройти проверку "есть ли у вас" и реальный факт, что такая искусственная процедура неэффективна и нарушает безопасность потоков - в принципе ( он нарушает безопасность потоков в других безопасных реализациях, делая acces неатомными).