我正在查看一些代码,我发现派生类有一个get属性:
{ get { return base.hwSystem as DerivedHardwareSystem; } }
其中DerivedHardwareSystem : HardwareSystem
和hwSystem
是HardwareSystem
的成员。
以下是什么区别?
{ get { return base.hwSystem as DerivedHardwareSystem; } }
和
{ get { return this.hwSystem as DerivedHardwareSystem; } }
谢谢!
答案 0 :(得分:2)
如果覆盖hwSystem
,this.hwSystem
将使用该覆盖,而base.hwSystem
将忽略覆盖并使用基类中定义的hwSystem
。如果未覆盖hwSystem
,则它们之间没有区别。
答案 1 :(得分:0)
Base Class & Derived Class以下是对.Base关键字的含义的解释我还将提供一个MSDN链接,以便进一步解释
base关键字用于从派生类
中访问基类的成员this关键字引用类的当前实例,并且还用作扩展方法的第一个参数的修饰符。
答案 2 :(得分:0)
如果您的子类具有hwSystem
的重写或新实现,则this.hwSystem
引用子类中的版本,base.hwSystem
引用基类中的版本。
如果子类没有覆盖或创建hwSystem
的新版本(这是您所描述的),则base.hwSystem
和this.hwSystem
引用相同的实现。请记住,如果有人在将来添加新实现,那么您就处于上述情况中。
答案 3 :(得分:0)
它们通常是相同的,除非派生类覆盖hwSystem
中已存在的base
属性。在这种情况下,this.hwSystem
可能是完全不同的事情。