|
6
|
| Arseni Mourzenko · 技术社区 · 15 年前 |
|
|
1
3
唯一的区别是显式调用查看父类,而隐式调用通过简单继承最终位于同一位置。性能差异可以忽略不计。正如HansPassant所说,如果在某个时刻将startengine设置为虚拟的,那么对base.startengine()的调用将导致奇怪的行为。
你不应该需要任何一个限定符来获得正确的位置。
|
|
2
6
没有区别,startEngine()不是虚拟的。您不应该使用base,以防您重构它使之成为虚拟的。性能差异不可测量。 |
|
|
3
2
在这种情况下,完全没有性能差异。 因为startengine不是虚拟的,所以编译器和稍后的抖动,准确地知道调用它意味着什么,无论是在基类、派生类还是从外部类。 如果startengine是虚拟的,并且编译器和/或抖动可以推断您是针对CityBus而不是从CityBus派生的对象调用的,那么有什么(非常小的)区别 能够 也可作为优化删除。 如果StartEngine是虚拟的,并且编译器和/或抖动无法推断您是针对CityBus而不是派生类进行调用,那么基础调用或直接调用之间的区别对于正确性至关重要。
通常,唯一调用基方法的位置
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |