Reg: управляемые объекты и собственные ресурсы в .net - PullRequest
0 голосов
/ 15 апреля 2011

Я сталкивался с этой строкой, когда читал о документации метода dispose в msdn.

здесь .В пояснительной записке есть строка, которая говорит: Используйте метод Dispose в первую очередь для управляемых объектов, которые используют собственные ресурсы, и для объектов COM, которые доступны для .NET Framework.

Может любойобъясните, что такое управляемые объекты и где они используются, а также что такое нативные ресурсы.

Заранее спасибо

1 Ответ

1 голос
/ 15 апреля 2011

Когда вы пишете приложение для Win32, вы отвечаете за управление памятью.Если вы выделяете память, вы ответственны за ее освобождение, иначе ваша программа будет иметь утечки памяти.

В двух словах, Common Language Runtime, то есть «программа», которая запускает приложения .NET, отвечает за управлениепамять для вас.При создании объекта:

var myInstance = new MyObject();

вы не несете ответственности за разрушение этого объекта, а также за ресурсы памяти, которые он потребляет.Когда вы создаете объект, как описано выше, в любой программе .NET (C #, F #, VB.NET ...), вы создаете управляемый объект .

Однако ваш объект, даже будучиуправляемый объект, может напрямую манипулировать памятью и распределять неуправляемые ресурсы.C # имеет область действия, называемую unsafe , позволяющую манипулировать памятью низкого уровня.Кроме того, ваша программа может взаимодействовать с ресурсами за пределами .NET, такими как Реестр Windows или создавать и удалять временные файлы во время выполнения программы.Ты видишь?.NET CLR не может управлять этими ресурсами за вас.Таким образом, вы обязаны распорядиться, когда ваша программа будет завершена.Вот почему вы должны реализовать IDisposable.

Если вам нужны примеры, посмотрите, какие классы реализуют IDisposable. SqlConnection является одним из них.Их несколько.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...