6
|
Arseni Mourzenko · 技术社区 · 14 年前 |
1
3
唯一的区别是显式调用查看父类,而隐式调用通过简单继承最终位于同一位置。性能差异可以忽略不计。正如HansPassant所说,如果在某个时刻将startengine设置为虚拟的,那么对base.startengine()的调用将导致奇怪的行为。
你不应该需要任何一个限定符来获得正确的位置。
|
2
6
没有区别,startEngine()不是虚拟的。您不应该使用base,以防您重构它使之成为虚拟的。性能差异不可测量。 |
3
2
在这种情况下,完全没有性能差异。 因为startengine不是虚拟的,所以编译器和稍后的抖动,准确地知道调用它意味着什么,无论是在基类、派生类还是从外部类。 如果startengine是虚拟的,并且编译器和/或抖动可以推断您是针对CityBus而不是从CityBus派生的对象调用的,那么有什么(非常小的)区别 能够 也可作为优化删除。 如果StartEngine是虚拟的,并且编译器和/或抖动无法推断您是针对CityBus而不是派生类进行调用,那么基础调用或直接调用之间的区别对于正确性至关重要。
通常,唯一调用基方法的位置
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |