Начиная с C/С++ давным-давно у меня все еще есть привычка к тому, чтобы все ресурсы были очищены правильно. Я всегда гарантирую, что Dispose вызывается в классах IDisposable и реализует шаблоны Dispose в моих классах, содержащих одноразовые объекты.
Однако в моей среде я более или менее единственный, кто это делает. Другие просто не понимают, что я делаю, и думаю, что мой код сложнее понять.
Они просто создают подключения к базе данных, открывают потоки и т.д., не вызывая Close или Dispose. Иногда они устанавливают локальную или переменную-член в "Nothing" в конце метода (угадывайте их фон).
Моя проблема в том, что их код работает так же хорошо, как и мой. Код, который со временем создает тысячи объектов подключения к базе данных, просто работает.
Итак, игнорируя любые аргументы о правильности кода, следуя инструкциям и т.д., действительно ли IDiposable имеет значение?
У кого-то на самом деле закончились ресурсы из объектов Disposing?
Edit: Спасибо за все ответы. Интересно видеть, что у некоторых людей были проблемы, когда не было Disposing. Это кажется редким, хотя, и я полагаю, что GC/JIT делает хорошую работу по поддержанию использования ресурсов в нормальных условиях.
Ни мои коллеги, ни я не изменим поведение из-за этого, но было бы хорошо быть правым.