using IDisposable

DotNetCore实战

共 1571字,需浏览 4分钟

 ·

2021-06-09 12:18


using和IDisposable是组合使用的,像这种一个关键字和一个接口的组合,在C#中很少见的,using这个关键字,也就因为IDisposable多了一个身份。

其实很多人都知道IDisposable,有一个方法void Dispose(),通常是用来释放一些必须释放的资源时,要实现这个接口,这样,就可以在使用using后,调起这个Dispose()。

之前,在使用using时,需要给using一个使用范围,现在推荐不使用范围,那接下来看看有什么区别。

实现IDisposable接口的类:

class Test : IDisposable{    private readonly string _name;    public Test(string name)    {        _name = name;    }    public void Dispose()    {        WriteLine($"{_name} Dispose");    }    public void CallMethod_1()    {        WriteLine("CallMethod_1");    }}

之前的用法,"1 end"在"1 Dispose"的后面,这个很好理解,因为using下面有一个{}范围。

void Call01(){    using (var test = new Test("1"))    {         test.CallMethod_1();        }     WriteLine("1 end");}

现在可以使用的用法,"2 end"始终在"2 Dispose"的前面,即使我们在WiteLine("2 end")前面调用test.Dispose(),也会在Call02方法结束后再调一次Dispose。

void Call02(){    using var test = new Test("2");    test.CallMethod_1();    WriteLine("2 end");}


就按开始的说法,如果Dispose是释放一些资源,有些资源不能释放多次,这个时候就要注意了,不能多次调用Dispose(),所以即然用了using,就不用关注Dispose()了。



往期精彩回顾




【推荐】.NET Core开发实战视频课程 ★★★

.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

【.NET Core微服务实战-统一身份认证】开篇及目录索引

Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南)

.NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了

10个小技巧助您写出高性能的ASP.NET Core代码

用abp vNext快速开发Quartz.NET定时任务管理界面

在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度

现身说法:实际业务出发分析百亿数据量下的多表查询优化

关于C#异步编程你应该了解的几点建议

C#异步编程看这篇就够了


浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报