use*_*872 3 .net c# garbage-collection memory-management
如果我有一个仅使用托管资源的类,那么我认为没有必要完全实现 IDisposable 模式。
当然这已经足够了:
public class ManagedResourceClient : IDisposable
{
private ITheManagedResource _myManagedResource = new TheManagedResource()
public void Dispose()
{
if ( _myManagedResource != null )
{
_myManagedResource.Dispose();
_myManagedResource = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我没有看到任何使用的理由:
能否确认以上内容正确?
您几乎已经完成了,因为您的类没有密封,有人可以从您的类派生,并且该派生类也可能需要处置对象。让你的类密封起来,你当前的实现就很好。
public sealed class ManagedResourceClient : IDisposable
{
private ITheManagedResource _myManagedResource = new TheManagedResource()
public void Dispose()
{
if ( _myManagedResource != null )
{
_myManagedResource.Dispose();
_myManagedResource = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想了解有关处置的更多信息(以及为什么 Microsoft 给出的带有终结器的股票示例实际上是一个坏示例),请参阅 Stepen Cleary 撰写的这篇非常好的文章:“ IDisposable:您的母亲从未告诉您有关资源释放的内容”
| 归档时间: |
|
| 查看次数: |
2129 次 |
| 最近记录: |