今天,我想对一个文件执行操作,所以我想到了这段代码。
class Test1
{
Test1()
{
using (var fileStream = new FileStream("c:\\test.txt", FileMode.Open))
{
//just use this filestream in a using Statement and release it after use.
}
}
}
但在代码审查时,我被要求实现IDisposable接口和Finalizer方法
class Test : IDisposable
{
Test()
{
//using some un managed resources like files or database connections.
}
~Test()
{
//since .NET garbage collector, does not call Dispose method, i call in Finalize method since .net garbage collector calls this
}
public void Dispose()
{
//release my files or database connections
}
}
但是,我的问题是为什么我要这样做?
虽然我无法按照我的方式证明,但当使用语句本身可以释放资源时,为什么我们需要使用 IDisposable 呢?
有任何特定的优点或者我遗漏了某些东西吗?
FileStream
是一种托管资源。 - Damien_The_Unbeliever