• using IDisposable


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

     

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

     

     

  • 相关阅读:
    html页面自动运行php文件
    在数据库原有字段后增加新内容
    mysql判断字段不等于空
    php中的日期加减
    js验证只能输入中文
    session_start()关于Cannot send session cache limiter headers already sent错误解决方法
    php记录前一页面url
    打印功能
    js验证email
    用php获取本周,上周,本月,上月,本季度日期
  • 原文地址:https://www.cnblogs.com/ljknlb/p/15864294.html
Copyright © 2020-2023  润新知