c#:继承的类获取属性,“return this.x as DerivedClass”或“return base.x a

本文关键字:return DerivedClass as base this 获取 属性 继承 | 更新日期: 2023-09-27 18:24:07

我正在查看一些代码,我看到派生类具有get属性:

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

其中DerivedHardwareSystem : HardwareSystemhwSystemHardwareSystem的成员。

以下两者有什么区别?

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

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

谢谢!

c#:继承的类获取属性,“return this.x as DerivedClass”或“return base.x a

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

基类和派生类 以下是对 .基本关键字意味着我还将放置一个指向MSDN的链接,该链接将进一步解释

base 关键字用于从派生类中访问基类的成员

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

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

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

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