给定以下代码,有没有办法我可以调用方法X的A类版本?
class A { virtual void X() { Console.WriteLine("x"); } } class B : A { override void X() { Console.WriteLine("y"); } } class Program { static void Main() { A b = new B(); // Call A.X somehow, not B.X... }
使用C#语言构造,您不能从或范围 之外 显式调用基函数。如果您确实需要这样做,那么您的设计中就有一个缺陷- 即该功能不应该从一开始就是虚拟的,或者应该将基本功能的一部分提取为单独的非虚拟功能。A``B
A``B
您可以从BX 内部 调用AX
class B : A { override void X() { base.X(); Console.WriteLine("y"); } }
但是那是另外一回事。