ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

using IDisposable

2022-02-05 16:03:15  阅读:137  来源: 互联网

标签:IDisposable end void Dispose test using


  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()了。

 

  想要更快更方便的了解相关知识,可以关注微信公众号   

 

 

标签:IDisposable,end,void,Dispose,test,using
来源: https://www.cnblogs.com/ljknlb/p/15864294.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有