c#里using除了引用程序集,例如:
using System; using System.Collections.Generic;
还有1个重要的用法:
我们都知道system.object里有Finalize()是虚函数,在GC进行垃圾回收的时候用到,一般我们都不用自己显示的清理逻辑,但是只是一般情况下,自然就想到了override Finalize()。
{
protected override Finalize()
{
//do something
}
}
但是c#不允许这样做,很奇怪。我们只能增加析构函数:
class a
{
~a()
{
Console.WriteLine("I am dead!");
}
}
更有一种情况,如果你的类类型是可处置的,也就是支持IDisposable接口时,可以调用Dispose()。
class a : IDisposable
{
public void Dispose()
{
//清楚非托管资源。。。。
// and something else
}
}
当然最好判断下目前类型是否支持IDisposable
。。。。
if (a is IDisposable)
a.Dispose();
在处理实现了IDisposable时我们一般使用结构化的异常处理来保证Dispose()调用:
try
{
//使用a成员
}
finally
{
a.Dispose();
}
显然这样做要把每个可处置的类型包含在try/finally里,不是很让人接受,于是就有了using的另一用途:
using(a mya=new a())
{
//使用mya对象
}
虽然在CIL代码里还是try/finally,但我们的代码编写和阅读更让人接受。
3139

被折叠的 条评论
为什么被折叠?



