释放资源的一般范式——更锋利的C#代码小记
2024-09-05 20:50:48
public class Photo : IDisposable
{
//在Finalize函数中调用内部的Dispose方法
~Photo()
{
//被自动回收时仅释放托管资源,不释放非托管资源
Dispose(false);
}
//提供了自命名的释放资源方法
public void Close()
{
//当显式回收时则释放所有资源
Dispose(true);
}
#region IDisposable接口显式实现
//显式实现IDisposable接口,避免同时出现Dispose方法和自定义命名方法(Close)
public void IDisposable.Dispose()
{
//释放所有资源
Dispose(true);
//避免重复调用Finalize函数
GC.SuppressFinalize(this);
}
#endregion
//内部的Dispose方法,真正实施资源释放工作
protected virtual void Dispose(bool disposing)
{
if(disposing==true)
{
//释放托管资源
}
//释放非托管资源
}
}
最新文章
- 纪录我的iOS学习之路
- YbSoftwareFactory 代码生成插件【十六】:Web 下灵活、强大的审批流程实现(含流程控制组件、流程设计器和表单设计器)
- 蓝牙4.0 BLE基础之vdd检测new
- 误将文件push到Git,如何删除
- [VBS]遍历XML文档
- Python中的*args和**kwarg
- js实现按回车自行提交
- HDU 1004 ballons(map)
- 版本和API Level对照表
- C++ HttpServlet 高并发多线程 HTTP 服务器(转)
- 多层次的Json字符串转化为对象
- iOS UIAlertView 文字对其方式 文字大小 设置方法
- python脚本对 mysql数据库进行增删改查操作
- odoo中各视图写法
- python 管道、数据共享、进程池
- Arithmetic Slices LT413
- golang的日志系统log和glog
- CentOS下用yum命令安装jdk
- LinkedList剖析
- hdfs的FileSystem实例化