C#中using以及实现接口IDisposable的使用方法
2012-06-21 10:46
811 查看
一、定义一个类让其实现接口IDisposable
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace testDispose
{
class consoleDispose:IDisposable
{
private bool disposed = false;
public consoleDispose()
{ }
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);//系统不再去调用Finalize方法,以便重复调用
}
protected virtual void Dispose(bool isDisposing)
{
if (!disposed)
{
if (isDisposing)
{
Console.WriteLine("释放托管资源");
}
Console.WriteLine("释放非托管资源");
}
disposed = true;
}
~consoleDispose()//这个析构函数会调用base.Finalize();
{
Dispose(false);
}
}
}
二、应用端使用using
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace testDispose
{
class Program
{
static void Main(string[] args)
{
using (consoleDispose cd = new consoleDispose())//注意推出using的范围之后就是调用Dispose方法,而退出应用程序就是调用析构函数
{
Console.WriteLine("请按任意键推出...");
Console.ReadKey();
}
}
}
}
三、输出结果
释放托管资源(这个是在退出using范围后调用的)
释放非托管资源(这个是在退出应用程序后调用的)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace testDispose
{
class consoleDispose:IDisposable
{
private bool disposed = false;
public consoleDispose()
{ }
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);//系统不再去调用Finalize方法,以便重复调用
}
protected virtual void Dispose(bool isDisposing)
{
if (!disposed)
{
if (isDisposing)
{
Console.WriteLine("释放托管资源");
}
Console.WriteLine("释放非托管资源");
}
disposed = true;
}
~consoleDispose()//这个析构函数会调用base.Finalize();
{
Dispose(false);
}
}
}
二、应用端使用using
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace testDispose
{
class Program
{
static void Main(string[] args)
{
using (consoleDispose cd = new consoleDispose())//注意推出using的范围之后就是调用Dispose方法,而退出应用程序就是调用析构函数
{
Console.WriteLine("请按任意键推出...");
Console.ReadKey();
}
}
}
}
三、输出结果
释放托管资源(这个是在退出using范围后调用的)
释放非托管资源(这个是在退出应用程序后调用的)
相关文章推荐
- 由IDisposable接口导致的using使用 以及using的其他用法
- 【C#】深度理解虚方法 继承 以及接口的简单使用
- C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法
- Caffe中实现LSTM网络的思路以及LSTM网络层的接口使用方法。 本文描述了论文《Long-term recurrent convolutional networks fo
- C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- C#中IDispose接口的实现方法以及为什么这么实现?
- 字符串相似度计算的方法,使用SQL以及C#实现,本文非原创摘自网络(.NET SQL技术交流群入群206656202需注明博客园)
- lwj_C#_集合的使用、接口方法的实现;
- C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法
- c#使用扩展方法,实现对接口的扩展
- C#中基类、派生类以及使用接口来实现多重继承
- Android HTTP实例 使用GET方法和POST方法发送请求(通过Apache接口实现)
- C#隐式/显示实现接口方法详解
- C#中使用GDI+实现饼状图和柱状图跟数据库联接显示数据的方法
- Android WindowManager和WindowManager.LayoutParams的使用以及实现悬浮窗口的方法
- 详解C#接口以及实现/C# 接口中不能定义字段
- C# 中 using 的三种使用方法
- 谨慎使用显式接口方法实现
- SAMBA 的实现原理以及使用方法