我有一个一次性的连接类
public class Connection : IDisposable { ... }
和一个依赖它的类
public class UsesConnection : IDisposable {
UsesConnection (Connection c) {...}
public void Dispose() {
c.Dispose();
...
}
...
}
如何在不收到UsesConnection
错误的情况下创建并返回CA2000
课程?
以下代码在CA2000
c = new Connection();
错误
Connection c = null;
UsesConnection u = null;
try {
c = new Connection()
u = new UsesConnection(c);
return u;
} catch {
if (u != null) u.Dispose();
else if (c != null) c.Dispose();
throw;
}
答案 0 :(得分:2)
改为使用using
块。
using (var c = new Connection())
using (var u = new UsesConnection(c))
{
// Do your work here
}
但不要return
,因为这将处置两个对象。不要让UsesConnection
处置Connection
。
你应该负责维护你的一次性参考文献的生命周期,而不是一些打电话者 - 问问自己"如果他们从未丢弃我的物品会怎么样?"