我正在努力确保我的理解IDisposable
是正确的,并且有些事情我仍然不太确定。
IDisposable
似乎有两个目的。
- 提供按需“关闭”托管对象的约定。
- 提供一个约定以释放托管对象持有的“非托管资源”。
我的困惑来自于确定哪些场景有“非托管资源”在起作用。
假设您正在使用 Microsoft 提供的IDisposable
实现(托管)类(例如,与数据库或套接字相关的)。
- 你怎么知道它是
IDisposable
只为上面的1还是1&2实现的? - 您是否负责确保释放内部可能持有或不持有的非托管资源?您是否应该向您自己的调用 instanceOfMsSuppliedClass.Dispose() 的类添加终结器(这将是正确的机制吗?)?