如果一个类继承自己实现IDisposable的接口,那么该类是否也应该实现IDisposable?
e.g。
internal IMyInterface : IDisposable
{
Method1();
}
internal ClassA : IMyInterface, IDisposable
{
public Method1
{
...
}
public Dispose()
{
...
}
}
或
internal ClassA : IMyInterface
{
public Method1
{
...
}
public Dispose()
{
...
}
}
对此事的任何澄清都将非常感激。感谢
答案 0 :(得分:4)
接口是契约,没有任何实现。因此,实现接口的类必须实现直接或间接继承的接口所指示的所有内容。如果不这样做,你的代码甚至都不会编译。
是的,您必须实现IDisposable
,除非您从已经实现它的类派生您的类。 (注意:您不需要在类的继承列表中指定IDisposable
接口,但必须实现其成员。)
注意:Visual Studio使您可以轻松实现界面。只要您尚未完全实施,智能标记就会自动显示在IMyInterface
下方。您可以在智能标记菜单中选择显式和隐式实现接口。通常你会选择隐含。然后VS将自动创建接口所需的(空)方法,属性和其他成员,包括Dispose
。
答案 1 :(得分:2)
无论如何,该类必须实现Dispose
方法。
如果您问是否必须声明您的班级同时实施IDisposable
?所以答案是否定的,你没必要
答案 2 :(得分:1)
接口是声明。当一个接口继承另一个接口时 - 它实际上会为继承接口的声明添加一些方法声明。
所以在你的情况下 - IMyInterface将声明“Method1()”和“Dispose()”方法。无需再次添加IDisposable。
答案 3 :(得分:0)
由于IMyInterface
为IDisposable
,因此ClassA
不需要直接从IDisposable
继承...否则,是的,ClassA
必须实现{{} 1}}在这个例子中。
答案 4 :(得分:0)
不,没有必要单独实现Dispose,因为接口不会让它编译直到Dispose()
存在。