假设我们有一个名为A的类,它实现了IDisposable
接口。所以,当我们
使用它,我们写道:
using(classA cA = new classA())
{
}
让我们想要在另一个类的许多方法中使用classA,实际上在我的例子中是一个包含业务逻辑的模块中的类。有没有办法避免在所有这些中使用上述编码?
换句话说,有没有比使用以下更好的方法来使用classA?
class B
{
// properties
// constructors
// methods
public void methodA()
{
using(classA cA = new classA())
{
// code goes here
}
}
public void methodB()
{
using(classA cA = new classA())
{
// code goes here
}
}
public void methodC()
{
using(classA cA = new classA())
{
// code goes here
}
}
}
提前感谢您的帮助。
答案 0 :(得分:4)
让课程B
实施IDisposable
。
在A
的构造函数中创建B
的实例(或在首次使用时懒洋洋地创建它),将其存储在一个字段中并将其置于类B
的{{{ 1}}方法。
答案 1 :(得分:2)
这确实取决于你需要ClassA的短暂存在。
另一种方法是使ClassB实现IDisposable
class B : IDisposable {
private classA cA;
public B() {
cA = new classA();
}
public void Dispose() {
if (cA != null) {
cA.Dispose();
cA = null;
}
}
}
但是你需要用一个使用来包装对classB的所有调用,所以我不确定你会得到什么。