C# 在类中多次使用IDisposable对象的更好方法

C# 在类中多次使用IDisposable对象的更好方法,c#,idisposable,C#,Idisposable,假设我们有一个名为a的类,它实现了IDisposable接口。所以当我们 使用它,我们写道: using(classA cA = new classA()) { } 让我们在另一个类的许多方法中使用classA,在我的例子中,它实际上是一个包含业务逻辑的模块中的类。有没有办法避免在所有这些代码中使用上述编码 换句话说,有没有比下面更好的方法来使用classA class B { // properties // constructors // methods

假设我们有一个名为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
        }
    }
}

提前感谢您的帮助。

使类
B
实现
IDisposable


B
的构造函数中创建
A
的实例(或在第一次使用时惰性地创建),将其存储在字段中,并在class
B
dispose
方法中进行处理。

使class
B
实现
IDisposable


B
的构造函数中创建
A
的一个实例(或者在第一次使用时懒洋洋地创建),将其存储在一个字段中,然后在类
B
dispose
方法中对其进行处理。

这确实取决于类A的寿命有多短

另一种选择是使ClassB实现IDisposable

class B : IDisposable {

    private classA cA;

    public B() {
      cA = new classA();
    }

    public void Dispose() {
        if (cA != null) {
           cA.Dispose();
           cA = null;
        }
    }
}

但是你需要用using来包装对classB的所有调用,所以我不确定你会得到什么。

这确实取决于你需要ClassA的寿命有多短

另一种选择是使ClassB实现IDisposable

class B : IDisposable {

    private classA cA;

    public B() {
      cA = new classA();
    }

    public void Dispose() {
        if (cA != null) {
           cA.Dispose();
           cA = null;
        }
    }
}
但是你需要用using来包装对classB的所有调用,所以我不确定你会得到什么