Net高级技术——IDisposable_计算机软件及应用_IT计算机_专业资料

Net高级技术——IDisposable_计算机软件及应用_IT计算机_专业资料

ID:43033271

大小:111.71 KB

页数:8页

时间:2019-09-24

Net高级技术——IDisposable_计算机软件及应用_IT计算机_专业资料_第1页
Net高级技术——IDisposable_计算机软件及应用_IT计算机_专业资料_第2页
Net高级技术——IDisposable_计算机软件及应用_IT计算机_专业资料_第3页
Net高级技术——IDisposable_计算机软件及应用_IT计算机_专业资料_第4页
Net高级技术——IDisposable_计算机软件及应用_IT计算机_专业资料_第5页
资源描述:

《Net高级技术——IDisposable_计算机软件及应用_IT计算机_专业资料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Net高级技术DisposableDisposable概述GC(垃圾收集器)只能I叫收托管(Managed)内存资源,对于数据库连接、文件句柄、Socket连接等这些资源(非托管资源,UnManaged)就无能为例,必须程序员白己控制资源的回收。非托管资源:SqlConnection>FileStream等。对于使用非内存资源的类,完全可以自己定义一个销毁资源的方法來供程序员回收,.net推荐实现Disposable接口(为了规范非托管资源的回收),在Dispose方法中进行回收。实现了Disposable接口的对象都

2、可以使用using进行资源管理。using就是帮我们做了:复制代码IFileStreamfs=newF.....2try{3fs.read()....4}5finally{6fs.Dispose));7}复制代码实现了(Disposable接口的对彖都耍进行回收,否则很对能有内存泄露。非托管内存资源才需要实现DisposableDisposable例了复制代码1namespace资源回收2{3classProgram4{5staticvoidMain(string[]args)6{7〃使用using对实现Disposa

3、ble的类了进行资源管理8/*拿到一个对象的时候,首先判断这个对象是否实现了[Disposable接口,如果实现了,最好就用using包裹住这个对彖,保证这个对彖用完Z后被释放掉,否则很可能出现资源泄露的问题9*/10using(Telphonetl=newTelphone())II{12tl.Open();12tl.Speak("hello");13tl.Bomb();14//tl.Dispose!);//如果在这里调用了Dispose!)方法释放资源,那么在执行tl.OpenOTT法就出错,电话线已经被剪断了,无法

4、再打电话了tl.Open();tl.Speak("lamback!");}//代码执行到这里后,就会调用Dispose方法来进行资源冋收Console.ReadKey();}}I

///Teiphone类实现了Disposable接口///classTelphone:IDisposable{///III电话状态IIIprivateTelphoneStatestate;III///打电话///publicvoi

5、dOpen(){if(state==TelphoneState.Disposed){thrownewExceptionf"电话线已经被剪断,无法打开!“);}state=TelphoneState.Open;Console.WriteLine("拿起电话”);}III

///说话///III说话内容publicvoidSpeak(strings){if(state!=TelphoneState.Open){thrownewExceptio

6、n)"没有连接”);}Console.WriteLine(s);}///

565758596061626364656667686970717273747576777879808182838485III挂掉电话IIIpublicvoidBomb(){state=TelphoneState.Close;Console.WriteLinef'挂掉电话”);}#regionDisposable成员///III实现Disposable接口屮的Dispose()方法来释放非托管

7、资源III如何释放非托管资源由程序自己定///

publicvoidDisposed{if(state==TelphoneState.Open){Bomb();//挂掉电话}state=TelphoneState.Disposed;Console.WriteLine("剪断电话线”);}#endregion}///III电话状态枚举///enumTelphoneStateOpen,Close,Disposed86}•Net高级技术——结构体结构休结构体和类的区别:

8、结构体是值类型,类是引用类型结构体非常类似于类,但是值类型(拷贝传递),不能被继承Int32^DateTime等都是结构体,从ValueType继承,值类型。结构体测试程序:复制代码1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSyste

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。