这个NET IDisposable Pattern implies,如果编写终结器并实现IDisposable,终结器需要显式调用Dispose.
然而,如果我这样做会发生什么:
class Foo : IDisposable
{
public void Dispose(){ CloseSomeHandle(); }
}
并且不要实现终结器或其他任何东西.框架会为我调用Dispose方法吗?
是的,我意识到这听起来很愚蠢,所有的逻辑都暗示它不会,但我的后脑勺总是有两件事让我不确定.
几年前,有人告诉我,它实际上会这样做,而那个人在"了解他们的东西"方面有着非常可靠的记录
编译器/框架根据您实现的接口(例如:foreach、扩展方法、基于属性的序列化等)执行其他"魔术"操作,因此这也可能是"魔术".
虽然我读了很多关于它的东西,有很多隐含的东西,但我从来没有找到这个问题的definitive个肯定或否定的答案.