让我们看一个测试示例:
class A
{
public A()
{
this.Test(); //I want to call Test exactrly from class A!!! here
}
public virtual void Test ()
{
Console.WriteLine("I am A!");
}
}
class B : A
{
public B() { }
public override void Test()
{
Console.WriteLine("I am B!");
}
}
//Somewhere in code
B b = new B(); //I want It displays "I am A" instead of "I am B"
有办法吗? P.S.:我知道这是一个糟糕的设计,但我想知道以提高我对 C# 的了解。
最佳答案
不 - 您不能以非虚拟方式调用虚拟方法。 (无论如何,不是直接来自 C#...您可以在 IL 中,但无法在 C# 中表达。)
在这种情况下,如果希望进行调用的代码位于 A 中,那么您可以创建一个包含您感兴趣的行为的非虚拟方法,然后可能从虚拟方法中调用该非虚拟方法方法也是如此。
关于c# - 我可以指定要从哪个类调用虚拟方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7649087/