我一直在接口上做研究,在C#中有一段时间了,根据MSDN为什么处理通过接口提供
“接口更适合于在您的应用程序需要很多可能毫无关联的对象类型情况提供某些功能。“
https://msdn.microsoft.com/en-in/library/3b5b8ezk(v=vs.90).aspx
当实现Dispose()方法,而不是使用接口IDisposable的我可以简单地定义的Dispose()& 3种 方法把它交给user.My的问题在这里是“为什么微软创建IDisposable接口和什么是使用Interface实现Dispose()的目的“。
这就是我的意思
//This method is used to release Managed Resources.
public void Dispose()
{
this.Dispose();
}
//This method is used to release both managed & unmanaged Resources.
public void DisposeAll()
{
this.Dispose();
GC.SuppressFinalize(this);
ReleaseUnmangedResources();
}
//This method is used to release only unmanaged Resources.
public void DisposeUnmanaged()
{
ReleaseUnmangedResources();
}
我很抱歉,如果这个问题太愚蠢或simple.Please帮助我理解接口。
允许我们班的用户决定如何处理其资源是一个非常糟糕的主意。你为什么要公开你有托管或非托管资源的事实?通过暴露'Dispose',你告诉用户他们需要让你清理,但他们不需要知道为什么。 – Sean
仅供参考,它是一个很好的阅读 - http://stackoverflow.com/questions/538060/proper-use-of-the-idisposable-interface – Yogi
不止一个原因,但在列表的顶部是肯定的.NET不支持多重继承。如果你真的需要自己释放非托管资源,做99.9%的时间是错误的,那么你应该使用一次性模式并实现终结器。正确的做法是用SafeHandle类来包装它们。很少有必要写自己的。 –