2011-04-15 52 views
0

我在阅读有关msdn中的dispose方法文档时遇到了这一行。注册:.net中的管理对象和本地资源

here。在说明中给出了一行说明主要使用Dispose方法使用本机资源的托管对象和暴露给.NET Framework的COM对象。

任何人都可以解释什么是管理对象,它们在哪里使用以及本地资源是什么,以及一些示例。

在此先感谢

回答

1

当您编写一个Win32应用程序时,您负责管理内存。如果你分配内存你负责释放它,否则你的程序将有内存泄漏。

简而言之,公共语言运行时(即运行.NET应用程序的“程序”)负责为您管理内存。当你创建一个对象时:

var myInstance = new MyObject(); 

你不负责破坏这个对象以及它消耗的内存资源。当您在任何.NET程序(C#,F#,VB.NET ...)上创建类似上面的对象时,您正在创建一个受管对象

但是,您的对象,即使是托管对象,也可以直接操作内存并分配非托管资源。 C#有一个范围叫做不安全允许低级别的内存操作。除此之外,您的程序可能与.NET以外的资源交互,如Windows注册表或在程序执行期间创建和删除临时文件。你看? .NET CLR无法为您管理这些资源。因此,当你的程序完成时,你负责处理。这就是为什么你应该实现IDisposable。

如果您想要示例,请查看哪些类可以实现IDisposable。 SqlConnection就是其中之一。有几个。