-3

我们可以将 IDisposable 定义为抽象类,而不是像下面这样的接口。有什么缺点?

public abstract class absDisposable
{
    public abstract void Dispose();
}

public class childClass : absDisposable
{
    SqlConnection objConnect = new SqlConnection("connstring");

    public override void Dispose()
    {
        if (this.objConnect != null)
        {
            this.objConnect.Dispose();
            this.objConnect = null;
        }
    }
}

我在同一个接口中编写了该代码,否则没有抽象类没有实现的原因。这与我们定义接口的方式相同,没有任何实现。对吗?但是,问题不仅在于 IDisposable,还在于我们使用的所有接口。为什么我们不简单地编写我们需要的方法,为什么我们要再上一层来实现接口?由于接口没有任何用途。我们总是必须在派生类中给出我们自己的实现,所以代码的可重用性也没有问题。如果我们不能重用代码,接口如何解决 C# 中缺乏多重继承的问题?我只想知道接口在什么情况下证明了它的存在?

4

1 回答 1

9

由于 C# 不支持多重继承,因此您的想法将无法将可处置性与现有基类结合起来。

由于IDisposable不包含任何实现,因此没有理由将其设为抽象类。

于 2013-09-01T04:33:28.817 回答