C# 在类中多次使用IDisposable对象的更好方法
假设我们有一个名为a的类,它实现了C# 在类中多次使用IDisposable对象的更好方法,c#,idisposable,C#,Idisposable,假设我们有一个名为a的类,它实现了IDisposable接口。所以当我们 使用它,我们写道: using(classA cA = new classA()) { } 让我们在另一个类的许多方法中使用classA,在我的例子中,它实际上是一个包含业务逻辑的模块中的类。有没有办法避免在所有这些代码中使用上述编码 换句话说,有没有比下面更好的方法来使用classA class B { // properties // constructors // methods
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
的实例(或在第一次使用时惰性地创建),将其存储在字段中,并在classB
的dispose
方法中进行处理。使classB
实现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的所有调用,所以我不确定你会得到什么