我有一个C#对象,其中一个关键资源需要在非常具体的时间点刷新,这使得它成为一个糟糕的候选者,让垃圾收集器无论什么时候处理它,我应该如何处理它?是否有类似C++的删除操作符,让我在需要时手动终止该对象的实例?
你在找IDisposable
.这是一个实现它的示例类.
class MyDisposableObject : IDisposable { public MyDisposableObject() { } ~MyDisposableObject() { Dispose(false); } private bool disposed; private void Dispose(bool disposing) { if (!this.disposed) { if (disposing) { // Dispose of your managed resources here. } // Dispose of your unmanaged resources here. this.disposed = true; } } void IDisposable.Dispose() { Dispose(true); GC.SuppressFinalize(this); } }
要使用它,您可以执行以下操作:
public void DoingMyThing() { using (MyDisposableObject obj = new MyDisposableObject()) { // Use obj here. } }
该using
关键字确保在其作用域的末尾调用Dispose()
on方法IDisposable
.