c# - 我可以指定要从哪个类调用虚拟方法吗?

标签 c# .net inheritance virtual

让我们看一个测试示例:

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/

相关文章:

C++如何确保在使用虚拟继承时调用继承函数而不是基函数

javascript - 访问从 child 那里继承的功能

.net - reduce 和 reduceBack 之间有什么区别吗

asp.net - 来自 ASP.NET 的 COM 互操作

c# - 统计每个词出现的频率

php - 通过继承的 Laravel 公共(public)服务

c# - DbContext 对象在循环内不起作用

c# - 在线查看 .rdl 文件

c# - Windows 上的跨平台编程

c# - 如何在不使用 SMO 的情况下在 C# 中备份数据库 (SQL Server 2008)?