using 语句定义一个范围,在此范围的末尾将处理对象。
using (expression | type identifier = initializer) statement
其中:
expression
希望在退出 using 语句时调用 Dispose 的表达式。
type
identifier 的类型。
identifier
type 类型的名称或标识符。定义一个以上 type 类型的 identifier 是可以的。在每一个 identifier = initializer 的前边都有一个逗号。
initializer
创建对象的表达式。
statement
嵌入的语句或要执行的语句。
备注
在 using 语句中创建一个实例,确保退出 using 语句时在对象上调用 Dispose。当到达 using 语句的末尾,或者如果在语句结束之前引发异常并且控制离开语句块,都可以退出 using 语句。
实例化的对象必须实现 System.IDisposable 接口。
示例
// cs_using_statement.cs
// compile with /reference:System.Drawing.dll
using System.Drawing;
class a
{
public static void Main()
{
using (Font MyFont = new Font("Arial", 10.0f), MyFont2 = new Font("Arial", 10.0f))
{
// use MyFont and MyFont2
} // compiler will call Dispose on MyFont and MyFont2
Font MyFont3 = new Font("Arial", 10.0f);
using (MyFont3)
{
// use MyFont3
} // compiler will call Dispose on MyFont3
}
}
更多的了解请连接http://apps.hi.baidu.com/share/detail/2835169
using 指令定义一个作用域范围, 当作用域内部的代码执行完毕时,using会自动销毁在作用域创建的所有对像并释放资源
sr.Close();必须写在using作用域内,因为此对像是在using作用域中创建的
因为using会自动销毁对像并释放资源,所以sr.Close()方法可以不用写
我就事论事了,这里的using是让StreamReader这个读写器在使用完后,即在语句块结束后,释放掉StreamReader的所占用的资源,这种用法还是很普遍的,当你要事先实现IDisposable这个接口才行。
释放资源