这里没有软件测试的泛泛理论,只有博主的最佳实践。 博主的研究方向为静态分析和性能测试,致力于各种测试工具的引入、评估和开发。 本博的测试文章均为作者原创,转载请务必注明出处。

C#中使用using做强制资源清理

上一篇 / 下一篇  2009-03-09 17:37:42 / 个人分类:coverity

上周看一客户的C#代码,发现每次用new给类分配空间的时候,总是没有最后的"delete"操作。客户讲在C#中不需要自己delete,C#的垃圾回收(GC)会自动delete。

我上次接触C#的时候,还是2002年。过去了六七年,早忘了到底是怎么回事。so google了一些结论:还是有必要自己清理,可使用using。暂时没时间认真分析,暂时放在这里,等有空的时候再仔细研究。

(3)强制资源清理
            用途:清理非托管资源,不受GC控制的资源。Using结束后会隐式的调用Disposable方法。
            用法:

        using (Class1 c = new Class1())
        
{
 
        }
//清理非托管不受GC控制的资源

         但是当对象使用using关键字的时候,必须实现IDisposable接口。其实using的使用和try-catch-finaly中,在finaly代码域调用Disposable方法效果一样。注意Using不能使用多个不同的类

        Class1 f = new Class1();
        
try
        
{
            
//执行代码
        }

        
catch()
        
{
            
//异常处理
        }

        
finally
        
{
            f.Disposable();
        }

3.using语句,定义一个范围,在范围结束时处理对象。
场景:
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。
要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
例如:

using (Class1 cls1 = new Class1(), cls2 = new Class1())
{
  
// the code using cls1, cls2


}
 // call the Dispose on cls1 and cls2


这里触发cls1和cls2的Dispose条件是到达using语句末尾或者中途引发了异常并且控制离开了语句块。

欢迎对以上的东东了解的朋友留言讨论。


TAG:

 

评分:0

我来说两句

Open Toolbar