-3

以下のように IDisposable を Interface の代わりに抽象クラスとして定義できますか。短所は何ですか?

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 だけではなく、使用するすべてのインターフェイスについてです。必要なメソッドを単純に記述しないのはなぜですか? インターフェイスの実装のためにさらに 1 レベル進む必要があるのはなぜですか? インターフェイスは何の役にも立たないので。常に派生クラスで独自の実装を提供する必要があるため、コードの再利用性についても問題ありません。また、コードを再利用できない場合、インターフェイスは c# の多重継承の欠如をどのように解決するのでしょうか? 私が知りたいのは、インターフェースがその存在を証明するのはどのような状況ですか?

4

1 に答える 1

9

C# は多重継承をサポートしていないため、あなたの考えでは使い捨て可能性を既存の基本クラスと組み合わせることができなくなります。

IDisposableには実装が含まれていないため、抽象クラスにする理由はありません。

于 2013-09-01T04:33:28.817 に答える