C# 8 新特性 - using 声明

using语句块 

尽管.NET Core运行时有垃圾收集器(GC)来负责内存清理工作,但是我们还是要自己确保当非托管资源不再使用的时候应该被清理掉。以前针对实现了IDisposable接口的对象,我们经常会使用using 语句块来这样做: 

640?wx_fmt=png

 

这时候它的输出是这样的: 

640?wx_fmt=png

 

这样写还是有一点麻烦的,能简单一些就好了。但是而如果不使用using语句的话,那资源就不会被清理: 

640?wx_fmt=png

 

其输出就没有disposed那段了: 

640?wx_fmt=png

 

using声明 

但是从C# 8开始,我们可以使用using声明来做这件事了,要比之前的using语句块简单一些,直接看例子: 

640?wx_fmt=png

就是在定义变量前面的地方使用using声明。 

 

这样做的话,在Main方法走完的时候,db这个资源是可以被清理掉的: 

640?wx_fmt=png

可以看到db被Disposed了,但是您肯定也发现了不同之处:最后两行输出的顺序发生了变化。 

 

在使用using语句块的时候,清理动作发生在using块结束的时候: 

640?wx_fmt=png

 

而使用using声明以后,清理动作会发生在超出db作用范围的时候,也就是离开Main方法的时候: 

640?wx_fmt=png

 

总结 

using语句块和using声明还是要结合具体情况来使用。。。 

更详细内容请点击原文链接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值