【发布时间】:2018-01-05 20:09:01
【问题描述】:
我知道这个问题以前可能已经回答过,但我一辈子都找不到这个答案已经给出的问题。
我有 2 个类,我在其中 1 个上调用 dispose,我只是想知道我是否必须在 A 的 dispose 内显式调用 B 类的 dispose?还是会因为它已经是 A 的基类而自动执行此操作?
我如此关心的原因是 Resharper(A 与扩展)不断地给我一条指向它的消息。
'A.Dispose()' 隐藏继承的成员'B.Dispose()',如果想要隐藏,请使用 new 关键字。 “Dispose”需要关键字“new”,因为它隐藏了方法“void App.B.Dispose()”
class A : B, IDisposable
{
public void Dispose() {
}
}
class B : IDisposable
{
public void Dispose() {
}
}
【问题讨论】:
-
如果 A 继承自 B,为什么将 A 标记为 IDisposable? A 已经一次性
-
那么当你实际运行代码并调用 dispose 时,到底发生了什么?运行了哪些方法?
-
@maccettura 它改变了该类型对象的接口方法的绑定。
-
我猜你没有很好地理解 OO 概念......当你有一个实现
IDisposable的类B并创建一个继承自B的类A时,然后A自动“拥有”B提供的一切(包括IDisposable的实现)。您不需要在A上重新实现Dispose方法 -
@DiegoRafaelSouza 您只是假设不需要处理任何特定于
A的内容。这很可能不是真的。