Пытаюсь разобраться в написании собственных коллекций (да и вообще по глубже разобраться в коллекциях).
Я сейчас в учебных целях пишу реализацию коллекции, которая наследует интерфейс ICollection<T>.
Такой вопрос, как должен себя вести метод add если в коллекции по умолчанию задано IsReadOnly = true?
Есть такие варианты как:
Именно так, бросать исключение. Ничего глупого в этом нет: если операцию невозможно выполнить, нужно как можно громче заявить об этом, а не притворяться, что всё идёт как надо. В противном случае программист добавит элементы в коллекцию, не заметит ошибку, и будет считать, что ничего странного не происходит. Отловить логическую ошибку («я добавил элементы в коллекцию, но они там не появились») на порядок сложнее, чем поймать креш в виде необработанного исключения.
Наличие свойства IsReadOnly — ошибка в проектировании, сделанная ещё во времена .NET 1.0. Правильнее было бы иметь отдельный интерфейс IReadOnlyList<T> (который появился в .NET 4.5).
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники