Tag: virtual

关于虚拟/新/覆盖的困惑

我对virtual / new / override事情有点困惑。 这是一个例子: class A { public virtual void mVVirtual() { Console.WriteLine(“A::mVVirtual”); } } class B : A { public virtual void mVVirtual() { Console.WriteLine(“B::mVVirtual”); } } class C : B { public override void mVVirtual() { Console.WriteLine(“C::mVVirtual”); } } class Test { static void Main() { B b1 = new C(); […]

从derived而不是base调用的虚方法

有人可以向我解释为什么在将类转换为基类时调用重写的方法: class Base { public virtual void VirtualMethod() { Console.WriteLine(“Base virtual method”); } } sealed class Derived : Base { public override void VirtualMethod() { Console.WriteLine(“Overriden method”); } } static void Main(String[] args) { Derived d = new Derived(); ((Base)d).VirtualMethod(); } 我的意思是这个代码打印: Overriden method 并不是 Base virtual method 它是一个运行时或编译时的未来? 我知道我可以通过调用base.VirtualMethod()来调用Base的虚方法,但是我可以从外面调用吗? (如来自Main或其他课程)