首页 新闻 搜索 专区 学院

这样使用using语句是否能正确释放资源?

0
悬赏园豆:10 [已解决问题] 解决于 2008-10-18 19:49

在方法中使用,书写如下:

using(var c=new MyClass())

{

  return c.Name;

}

 

这样返回后,还能释放资源吗?

斯克迪亚的主页 斯克迪亚 | 老鸟四级 | 园豆:4124
提问于:2008-10-18 14:20
< >
分享
最佳答案
0

using会自动调用Dispose()方法。
跟你自己写了try-catch--finally{Dispose();}一样,只不多这些事情编译器帮你做了。

码尔代夫iimax | 老鸟四级 |园豆:3138 | 2008-10-18 17:58
其他回答(4)
0

只要你的MyClass是IDisposable的,在using块后会自动执行Dispose方法,将资源释放写在Dispose方法中即可

Gray Zhang | 园豆:17610 (专家六级) | 2008-10-18 14:45
0

换句话,只要是编译时没有错误,using内的资源都会被正确释放

丁学 | 园豆:18530 (专家六级) | 2008-10-18 16:22
0

楼上正解

张荣华 | 园豆:2020 (老鸟四级) | 2008-10-18 18:14
0

此问题应该这样:

概念:

1.要知道using

2.要知道using 语句提供的对象必须实现 IDisposable 接口。

因为这个接口提供了 Dispose 方法,该方法是用来释放当前对象的资源。

3.当然也可以自已实现资源释放

举例:

在使用此方法时,还要明白,打个比方:

有三个object,分别为A,B,C.

此时A 分配给 B,对象 B 又分配给 C,

那么 A 的 Dispose 实现必须对 B 调用 Dispose,而 B 反过来必须对 C 调用 Dispose

如果一个对象的基类实现 IDisposable,该对象还必须调用其基类的 Dispose 方法。

如果某对象的 Dispose 方法被调用一次以上,则该对象必须忽略第一次调用后的所有调用。

结果:

你的语句可以释放资源

 (理解是应用的基础):)

RicoRui | 园豆:3663 (老鸟四级) | 2008-10-18 18:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册