c#:继承类get属性,“将this.x返回为DerivedClass”或“将base.x返回为DerivedClass”。有什么不同?

时间:2012-02-09 16:46:06

标签: c# inheritance

我正在查看一些代码,我发现派生类有一个get属性:

{ get { return base.hwSystem as DerivedHardwareSystem; } }

其中DerivedHardwareSystem : HardwareSystemhwSystemHardwareSystem的成员。

以下是什么区别?

{ get { return base.hwSystem as DerivedHardwareSystem; } }

{ get { return this.hwSystem as DerivedHardwareSystem; } }

谢谢!

4 个答案:

答案 0 :(得分:2)

如果覆盖hwSystemthis.hwSystem将使用该覆盖,而base.hwSystem将忽略覆盖并使用基类中定义的hwSystem。如果未覆盖hwSystem,则它们之间没有区别。

答案 1 :(得分:0)

Base Class & Derived Class以下是对.Base关键字的含义的解释我还将提供一个MSDN链接,以便进一步解释

base关键字用于从派生类

中访问基类的成员

this关键字引用类的当前实例,并且还用作扩展方法的第一个参数的修饰符。

答案 2 :(得分:0)

如果您的子类具有hwSystem的重写或新实现,则this.hwSystem引用子类中的版本,base.hwSystem引用基类中的版本。

如果子类没有覆盖或创建hwSystem的新版本(这是您所描述的),则base.hwSystemthis.hwSystem引用相同的实现。请记住,如果有人在将来添加新实现,那么您就处于上述情况中。

答案 3 :(得分:0)

它们通常是相同的,除非派生类覆盖hwSystem中已存在的base属性。在这种情况下,this.hwSystem可能是完全不同的事情。