以下のように 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# の多重継承の欠如をどのように解決するのでしょうか? 私が知りたいのは、インターフェースがその存在を証明するのはどのような状況ですか?