在C#中使用using语句

Fen*_*end 4 c# using

可能重复:
什么是C#使用块,为什么要使用它?

我已经看到在代码块中间使用的using语句是什么原因造成的?

cgr*_*eno 41

使用语法可以(应)被用作限定用于任何实现一个范围的一种方式IDisposable的.using语句确保在发生异常时调用Dispose.

    //the compiler will create a local variable 
    //which will go out of scope outside this context 
    using (FileStream fs = new FileStream(file, FileMode.Open))
    {
         //do stuff
    }
Run Code Online (Sandbox Code Playgroud)

或者你可以使用:

    FileStream fs;
    try{
       fs = new FileStream();
       //do Stuff
    }
    finally{
        if(fs!=null)
           fs.Dispose();
    }
Run Code Online (Sandbox Code Playgroud)

从MSDN额外阅读

C#通过.NET Framework公共语言运行库(CLR)自动释放用于存储不再需要的对象的内存.记忆的释放是不确定的; 只要CLR决定执行垃圾收集,就会释放内存.但是,通常最好尽快释放文件句柄和网络连接等有限资源.

using语句允许程序员指定何时使用资源的对象应该释放它们.提供给using语句的对象必须实现IDisposable接口.此接口提供Dispose方法,该方法应释放对象的资源.

  • +1 - 很好的答案 - 重要的是要注意编译器实际上用try/finally替换using语句. (4认同)