Мне известно, что операции Add и присваивания через индексатор в хеш-таблице различаются (т. Е. Последний разрешит перезапись, в то время как первый выдает «Элемент уже добавлен. Исключение Key in dictionary: ...») , Мой вопрос: в какой ситуации может возникнуть необходимость добавить что-то, но, если оно уже есть, выдать исключение?
В частности, похоже, что это просто инкапсуляция еще двух атомарных операций (Содержит и присваивание через индексатор), и я не могу придумать ни одного сценария, в котором я бы хотел, чтобы Microsoft обработала это инкапсулированным способом. .
РЕДАКТИРОВАТЬ: Я полностью поддерживаю идею, что исключительные случаи должны генерировать исключения, и что Add (хотя и просто инкапсуляция) обеспечивает исключение, когда данный ключ уже находится в словаре. Однако, как правило, Hashtables и Словари используются для быстрого поиска по ключам и значениям. Кроме того, большую часть времени, когда я создаю один, у меня уже есть вся доступная коллекция, и я просто переводю ее в словарь.
Пример меня просто поразил ... Я мог бы представить сценарий, в котором вы используете хеш-таблицу (или словарь) для отслеживания сеанса пользователей, вошедших в конкретный сеанс. И если у вас есть конкретное требование, чтобы каждый пользователь мог входить в систему только из одного места за раз (и что они должны выйти из одного сеанса перед повторным входом в систему), тогда вы можете захотеть добавить, потому что он более четко определяет цель код.