using语法糖

时间:2023-03-09 07:30:24
using语法糖

资源的分类

首先说一下资源的分类:

托管资源:由CLR管理分配和释放资源

非托管资源:不受CLR管理的对象,如 文件(StreamReader,BinaryReader,DataTable,各种Stream类),Socket,COM,数据库连接

实际应用

在处理网络,文件相关的地方,经常用到using语法糖。

文件处理类,网络类 等等都已继承了IDisposable

(没有实现IDisposable不能使用using语法糖)

Using使用Demo

class Program
{
static void Main(string[] args)
{
using (var mydis = new MyDisposable())
{
Console.WriteLine();
}
Console.WriteLine();
//输出:1,0,2 //没有继承IDisposable,不能使用此语法
//using (var tab = new TabClass())
//{ //}
}
} public class MyDisposable:IDisposable
{
/// <summary>
/// TODO 释放资源
/// </summary>
public void Dispose()
{
Console.WriteLine();
}
} public class TabClass
{
public void Close()
{ }
}

using实质

使用ildasm.exe来查看using,using语法会被解析成try-finally语句,也就是using(){}语法结束时会自动调用Dispose方法释放非托管资源

using语法糖