Ran*_*Guy 2 c# using-statement
可能重复:
什么是C#使用块,为什么要使用它?
所以我刚刚注意到在msdn示例和一些stackoverflow问题上有回答,其中using语句在streamwriter等之前使用,但实际上有什么好处呢?因为我从未被教过/告知/读过任何使用它的理由.
using (StreamReader sr = new StreamReader(path))
{
while (sr.Peek() >= 0)
Console.WriteLine(sr.ReadLine());
}
Run Code Online (Sandbox Code Playgroud)
代替:
StreamReader sr = new StreamReader(path);
while (sr.Peek() >= 0)
Console.WriteLine(sr.ReadLine());
Run Code Online (Sandbox Code Playgroud)
using块调用Dispose自动使用的对象的方法,好的一点是保证被调用.因此,无论事件是否在语句块中抛出异常,都会处置该对象.它被编译成:
{
StreamReader sr = new StreamReader(path);
try
{
while (sr.Peek() >= 0)
Console.WriteLine(sr.ReadLine());
}
finally
{
if(sr != null)
sr.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
额外的花括号用于限制范围sr,因此无法从使用块的外部访问它.