【发布时间】:2016-04-26 13:35:58
【问题描述】:
这是应该遵循的正确模式吗,即如果我的班级有一次性成员,我必须明确地在每个成员上调用 Dipose()?
class MyClass : IDisposable
{
public MyClass()
{
conn = maybeCreateAConnection();
}
public void Dispose()
{
if(conn!=null)conn.Dispose();
}
private SqlConnection conn;
}
【问题讨论】:
-
Dispose Pattern, first DO - “DO 在包含一次性类型实例的类型上实现基本 Dispose 模式”
-
我会质疑为什么您需要一个成员来进行连接 - 应该快速创建、使用和处理连接。很少有令人信服的理由让连接在课程期间保持活跃。
-
@Damien_The_Unbeliever 看起来很笨拙,更像是 C++ 必须记住哪些字段是一次性的!
-
通常这并不重要 - 连接是池化的,如果您正确释放旧连接,则从池中获取新连接相当简单(基本上只是一个重置)。跨度>
-
@Mr.Boy - 保持连接 string,而不是连接 object。
标签: c# garbage-collection dispose