• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

关于C#"非托管资源"的疑问,急盼高手解答,如果解答满意立即给分!!!

syinter 2002-10-10 06:03:48
究竟什么是C#的"非托管资源"呢?

我看的"C#高级编程"写的非常含糊,它只举一个例子(p120),从那个例子看来好像非引用类型的资源就是"非托管资源",例如int,double等,如果真是这样的话,那我就不明白了,这种"非托管资源"在出了作用域后应该就自动被系统回收了,那么还要"析构方法"释放"非托管资源"干吗????

还有,"非托管资源"究竟是怎么样释放的? 这本书关于这部分居然连个例子都没有(释放托管资源倒是有一个简单例子),只是写了一行注释"// code here will close connection", 真TMD的恶心啊!!!!
...全文
2 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
saucer 2002-10-14
you normally call those resource objects' Close() method
回复
syinter 2002-10-14
上面说的倒是和VS.NET中文版的MSDN一样,不过没有实际例子啊,如何回收还不是非常清楚,
我现在的理解是:
the instance of object(unmanaged resource's) how to dispose? i guess it will be disposed automatically(when come out the function),it's right or false ?

and ... how to close unmanaged resource ? who can give me a example ???
回复
saucer 2002-10-11
according to http://msdn.microsoft.com/library/en-us/cpguide/html/cpconautomaticmemorymanagement.asp?frame=true

非托管资源:

The most common type of unmanaged resource is an object that wraps an operating system resource, such as a file handle, window handle, or network connection. Although the garbage collector is able to track the lifetime of a managed object that encapsulates an unmanaged resource, it does not have specific knowledge about how to clean up the resource. When you create an object that encapsulates an unmanaged resource, it is recommended that you provide the necessary code to clean up the unmanaged resource in a public Dispose method.
回复
syinter 2002-10-11
楼上的回答显然不对吧,BOX后的引用类型是另外分配的,对它的任何修改不影响原来的值类型的值,因为装箱后的引用类型作用只是调用而已,不能修改,这可是<<C#高级编程>>上描述的
回复
dotnetxp 2002-10-10
你所指的被系统回收,应该是指被GC回收吧!

但GC只能回收Managed资源
不可能回收UnManaged资源。


对于int, doulbe类型. .NET会Box成为System.Int32 成为Managed
最后由GC回收。

回复
del_c_sharp 2002-10-10
楼主理解的应该没什么大偏差
c#的任何类型都是类,包括int,double。。所以它们当然也有析构函数
析构函数本身并不能释放,它你给你一个和对象吻别的机会罢了
回复
cnuninet 2002-10-10
非托管资源应该是不由framework run tiem管理的资源吧
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2002-10-10 06:03
社区公告

让您成为最强悍的C#开发者