我们可以将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;
}
}
}
我在相同的接口中编写了该代码,否则没有没有实现的抽象类的原因。这与我们定义Interface的方式相同,没有任何implementation.right?但是,问题不仅仅是IDisposable,而是我们使用的所有接口。为什么我们不简单地编写我们需要的方法,为什么我们为实现接口更多一层?因为Interface没有用处。我们总是必须在派生类中提供我们自己的实现,因此也不存在代码重用性的问题。如果我们不能重用代码,接口如何解决c#中缺少多重继承?我想知道的是接口证明它存在的情况是什么?
答案 0 :(得分:9)
由于C#不支持多重继承,因此您的想法将无法将可处置性与现有基类相结合。
由于IDisposable
不包含任何实现,因此没有理由将其作为抽象类。