Когда вы пишете приложение для Win32, вы отвечаете за управление памятью.Если вы выделяете память, вы ответственны за ее освобождение, иначе ваша программа будет иметь утечки памяти.
В двух словах, Common Language Runtime, то есть «программа», которая запускает приложения .NET, отвечает за управлениепамять для вас.При создании объекта:
var myInstance = new MyObject();
вы не несете ответственности за разрушение этого объекта, а также за ресурсы памяти, которые он потребляет.Когда вы создаете объект, как описано выше, в любой программе .NET (C #, F #, VB.NET ...), вы создаете управляемый объект .
Однако ваш объект, даже будучиуправляемый объект, может напрямую манипулировать памятью и распределять неуправляемые ресурсы.C # имеет область действия, называемую unsafe , позволяющую манипулировать памятью низкого уровня.Кроме того, ваша программа может взаимодействовать с ресурсами за пределами .NET, такими как Реестр Windows или создавать и удалять временные файлы во время выполнения программы.Ты видишь?.NET CLR не может управлять этими ресурсами за вас.Таким образом, вы обязаны распорядиться, когда ваша программа будет завершена.Вот почему вы должны реализовать IDisposable.
Если вам нужны примеры, посмотрите, какие классы реализуют IDisposable. SqlConnection является одним из них.Их несколько.