正确的处置方式:实现 IDisposable
实现 IDisposable 可以实现非托管资源和一次性资源的确定性释放。在您的代码片段中,User 类不处理非托管资源或一次性引用,因此不需要处置。这可以通过将类标记为密封来解决,从而有效地防止派生类重写 IDisposable。
对于更详细的示例,让我们考虑一个名为 ResourceManager 的类,它管理非托管资源(例如文件句柄)和 IDisposable引用(例如,数据库连接)。
将 IDisposable 与非托管结合使用资源:
public class ResourceManager : IDisposable { private FileStream fileStream; public ResourceManager() { // Allocate and open the file handle fileStream = new FileStream("myfile.txt", FileMode.Open); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposing) { // Free managed resources fileStream?.Close(); fileStream?.Dispose(); } // Free native resources fileStream.Dispose(); } }
将 IDisposable 与一次性引用一起使用:
public class ResourceManager : IDisposable { private DisposableReference reference; public ResourceManager() { // Obtain the disposable reference reference = new DisposableReference(); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposing) { // Free managed resources reference?.Dispose(); } } }
以上是何时应该在 C# 中实现 IDisposable?的详细内容。更多信息请关注PHP中文网其他相关文章!