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()了。
using IDisposable相关推荐
- IDisposable实现的方法什么时候被执行的
一,以什么是GC所认为的垃圾? 不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收 二,在仓储设计中,我们都知道非托管资源的手动释放,但继承的IDisposa ...
- .NET中IDisposable接口的基本使用
首先来看MSDN中关于这个接口的说明: [ComVisible(true)] public interface IDisposable { // Methods void Dispose(); } 1 ...
- Design Pattern IDisposable Pattern C
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! // - ...
- 强制回收和IDisposable.Dispose方法
如果某对象的 Dispose 方法被调用一次以上,则该对象必须忽略第一次调用后的所有调用. 如果对象的 Dispose 方法被多次调用,该对象一定不要引发异常. 除Dispose 之外的实例方法在资源 ...
- HttpApplication IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable ps url System.Web.dll
// 摘要:// 定义 ASP.NET 应用程序中的所有应用程序对象共有的方法.属性和事件.此类是用户在 Global.asax 文件中所定义的应用程序的基类.[ToolboxItem(false)] ...
- IDisposable 接口介绍
定义一种释放分配的非托管资源的方法. 实现 IDisposable 的类 类 说明 AsymmetricAlgorithm 表示所有不对称算法的实现都必须从中继承的抽象基类. BinaryReader ...
- .Net高级技术——IDisposable
IDisposable概述 GC(垃圾收集器)只能回收托管(Managed)内存资源,对于数据库连接.文件句柄.Socket连接等这些资源(非托管资源,UnManaged)就无能为例,必须程序员自己控 ...
- 【转载自codeproject】Another Look At IDisposable
少了一些图片,我懒得拷了,大家还是去源地址看吧 http://www.codeproject.com/KB/cs/idispose.aspx 极力推荐!!!! Introduction This is ...
- 通过IEnumerable和IDisposable实现可暂停和取消的任务队列
一般来说,软件中总会有一些长时间的操作,这类操作包括下载文件,转储数据库,或者处理复杂的运算. 一种处理做法是,在主界面上提示正在操作中,有进度条,其他部分不可用.这里带来很大的问题, 使用者不知道到 ...
- [分享]另一种对 IDisposable 的实现
相比于刚发出来没多久的关于 MVVM 的文章,对 IDisposable 接口的讨论更是老生常谈了. 详细讲解 IDisposable 的文章也有很多,不想深入了解的看了会头晕,想深入了解的估计也早就 ...
最新文章
- R语言ggplot2可视化将两个dataframe可视化的结果组合在一起实战:combining two plots from different data.frames
- 每日算法练习之下落的小球
- 微信jssdk ajax 获取签名,【Golang版】微信access_token、jsapi_ticket、signature签名算法生成示例,开箱即用...
- matlab变量名不同循环,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!...
- 网易云信被纳入 Gartner 2021年《CPaaS 市场指南》研究报告
- Linux:常用命令大全
- 怎样自己写一个MVC框架
- 钉钉老版本下载3.31_钉钉旧版pc下载-钉钉旧版pc客户端下载-西西软件下载
- 云服务器重装系统后卡顿,云服务器Windows重装系统须知
- bzoj 1133: [POI2009]Kon(DP)
- Climbing Stairs @python
- flowable 多人签收_Flowable所见即所得的流程设计器(中下)
- Tomcat后台管理
- Unity之Image Raw Image
- 计算半圆弧长及半圆的面积。(3分)
- 人工智能:从图灵到未来
- 关于Markdown编辑器
- 爬虫|基于船讯网实现AIS数据爬虫 船讯网轨迹数据以及轨迹信息
- 特征选择: 卡方检验、F 检验和互信息
- c语言传奇引擎源码,Ei3.0服务端引擎源代码+登陆网关+客户端插件
热门文章
- [C++][IO]读写二进制文件
- 介绍自定义JDataGrid电子表格版本公式中的函数?
- icewm使用心得[转]
- oracle 带有变量的语句_【成都校区】Oracle SQL语句之常见优化方法总结
- P2587 [ZJOI2008]泡泡堂 神仙贪心
- 设计模式——享元模式具体解释
- Java从零开始(二) Tomacat
- HttpClient异常处理手册
- 数据可视化(9)--数据可视化6步法
- 不是架构的架构之四:业务层的实现与自动代理