资源的分类
首先说一下资源的分类:
托管资源:由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(1); } Console.WriteLine(2); //输出:1,0,2 没有继承IDisposable,不能使用此语法 using (var tab = new TabClass()) { } } } public MyDisposable:IDisposable { /// <summary> /// TODO 释放资源 </summary> void Dispose() { Console.WriteLine(0); } } TabClass { Close() { } }
using实质
使用ildasm.exe来查看using,using语法会被解析成try-finally语句,也就是using(){}语法结束时会自动调用Dispose方法释放非托管资源
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。