gpt4 book ai didi

c# - 在析构函数中处理对象

转载 作者:太空狗 更新时间:2023-10-29 22:05:26 24 4
gpt4 key购买 nike

我有一个对象,其中有一个一次性对象作为成员。

public class MyClass
{
private MyDisposableMember member;

public DoSomething
{
using (member = new MyDisposableMember())
{
// Blah...
}
}
}

MyClass 中可以有很多方法,所有方法都需要一个using 语句。但如果我改为这样做呢?

public class MyClass
{
private MyDisposableMember member = new MyDisposableMember();

public DoSomething
{
// Do things with member :)
}

~MyClass()
{
member.Dispose();
}
}

如您所见,member 在析构函数中被释放。这行得通吗?这种方法有什么问题吗?

最佳答案

理想情况下,Dispose() 应该在完成之前被调用。最好遵循典型的处置模式,并允许用户正确地 Dispose() 对象,并让终结器处置它如果尚未调用处置

在这种情况下,由于您正在封装一个 IDisposable,所以您实际上根本不需要实现终结器。 (在完成时,封装的成员将完成,因此无需完成对象 - 它只会增加开销。)有关详细信息,请阅读 blog article I wrote关于封装 IDisposable。

关于c# - 在析构函数中处理对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2357854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com