IDisposable - что ваша мама не говорила об освобождении ресурсов. Что не так с IDisposble.
Это перевод первой части статьи https://www.codeproject.com/Articles/29534/IDisposable-What-Your-Mother-Never-Told-You-About. Статья была написана в 2008 году. Спустя 10 лет почти не потеряла актуальности.
Детерминированное освобождение ресурсов - необходимость
В течение более чем 20-летнего опыта кодирования я иногда разрабатывал собственные языки для решения задач. Они варьировались от простых имеративных языков до специализрованных регулярных выражений для деревьев. При создании языков есть множество рекомендаций и некоторые простые правила не должны нарушаться. Одно из них:
Никогда не создавай язык с исключениями, в котором нет детерминированного освобождения ресурсов.
Угадайте какой рекомендации не следует рантайм .NET, и как следствие все языки на его базе?
Причина по которой существует данное правило - детерминированное освобождение ресурсов необходимо для создания поддерживаемых программ. Детерминированное освобождение ресурсов обеспечивает определенную точку, в которой программист уверен, что ресурс освобожден. Существует два способа написания надежных программ: традиционный подход - освобождать ресурсы как можно раньше и соверменный подход - с освобождением ресурсов в течение неопределенного времени. Преимущество современного подхода в том, что программисту не надо явно освобождать ресурсы. Недостаток в том, что гораздо сложнее написать надежное приложение, появляется много трудноуловимых ошибок. К сожалению рантайм .NET создан с использование...
читать дальше...