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

using IDisposable相关推荐

  1. IDisposable实现的方法什么时候被执行的

    一,以什么是GC所认为的垃圾? 不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收 二,在仓储设计中,我们都知道非托管资源的手动释放,但继承的IDisposa ...

  2. .NET中IDisposable接口的基本使用

    首先来看MSDN中关于这个接口的说明: [ComVisible(true)] public interface IDisposable { // Methods void Dispose(); } 1 ...

  3. Design Pattern IDisposable Pattern C

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! // - ...

  4. 强制回收和IDisposable.Dispose方法

    如果某对象的 Dispose 方法被调用一次以上,则该对象必须忽略第一次调用后的所有调用. 如果对象的 Dispose 方法被多次调用,该对象一定不要引发异常. 除Dispose 之外的实例方法在资源 ...

  5. HttpApplication IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable ps url System.Web.dll

    // 摘要:// 定义 ASP.NET 应用程序中的所有应用程序对象共有的方法.属性和事件.此类是用户在 Global.asax 文件中所定义的应用程序的基类.[ToolboxItem(false)] ...

  6. IDisposable 接口介绍

    定义一种释放分配的非托管资源的方法. 实现 IDisposable 的类 类 说明 AsymmetricAlgorithm 表示所有不对称算法的实现都必须从中继承的抽象基类. BinaryReader ...

  7. .Net高级技术——IDisposable

    IDisposable概述 GC(垃圾收集器)只能回收托管(Managed)内存资源,对于数据库连接.文件句柄.Socket连接等这些资源(非托管资源,UnManaged)就无能为例,必须程序员自己控 ...

  8. 【转载自codeproject】Another Look At IDisposable

    少了一些图片,我懒得拷了,大家还是去源地址看吧 http://www.codeproject.com/KB/cs/idispose.aspx 极力推荐!!!! Introduction This is ...

  9. 通过IEnumerable和IDisposable实现可暂停和取消的任务队列

    一般来说,软件中总会有一些长时间的操作,这类操作包括下载文件,转储数据库,或者处理复杂的运算. 一种处理做法是,在主界面上提示正在操作中,有进度条,其他部分不可用.这里带来很大的问题, 使用者不知道到 ...

  10. [分享]另一种对 IDisposable 的实现

    相比于刚发出来没多久的关于 MVVM 的文章,对 IDisposable 接口的讨论更是老生常谈了. 详细讲解 IDisposable 的文章也有很多,不想深入了解的看了会头晕,想深入了解的估计也早就 ...

最新文章

  1. R语言ggplot2可视化将两个dataframe可视化的结果组合在一起实战:combining two plots from different data.frames
  2. 每日算法练习之下落的小球
  3. 微信jssdk ajax 获取签名,【Golang版】微信access_token、jsapi_ticket、signature签名算法生成示例,开箱即用...
  4. matlab变量名不同循环,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!...
  5. 网易云信被纳入 Gartner 2021年《CPaaS 市场指南》研究报告
  6. Linux:常用命令大全
  7. 怎样自己写一个MVC框架
  8. 钉钉老版本下载3.31_钉钉旧版pc下载-钉钉旧版pc客户端下载-西西软件下载
  9. 云服务器重装系统后卡顿,云服务器Windows重装系统须知
  10. bzoj 1133: [POI2009]Kon(DP)
  11. Climbing Stairs @python
  12. flowable 多人签收_Flowable所见即所得的流程设计器(中下)
  13. Tomcat后台管理
  14. Unity之Image Raw Image
  15. 计算半圆弧长及半圆的面积。(3分)
  16. 人工智能:从图灵到未来
  17. 关于Markdown编辑器
  18. 爬虫|基于船讯网实现AIS数据爬虫 船讯网轨迹数据以及轨迹信息
  19. 特征选择: 卡方检验、F 检验和互信息
  20. c语言传奇引擎源码,Ei3.0服务端引擎源代码+登陆网关+客户端插件

热门文章

  1. [C++][IO]读写二进制文件
  2. 介绍自定义JDataGrid电子表格版本公式中的函数?
  3. icewm使用心得[转]
  4. oracle 带有变量的语句_【成都校区】Oracle SQL语句之常见优化方法总结
  5. P2587 [ZJOI2008]泡泡堂 神仙贪心
  6. 设计模式——享元模式具体解释
  7. Java从零开始(二) Tomacat
  8. HttpClient异常处理手册
  9. 数据可视化(9)--数据可视化6步法
  10. 不是架构的架构之四:业务层的实现与自动代理