C#中using以及实现接口IDisposable的使用方法
一、定义一个类让其实现接口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范围后调用的)
释放非托管资源(这个是在退出应用程序后调用的)
孜孜不倦,学习不止