C# 在一般编程中,是否有一种方法;“附加到函数中”;而不是凌驾于整个事情之上?

C# 在一般编程中,是否有一种方法;“附加到函数中”;而不是凌驾于整个事情之上?,c#,inheritance,keyword,C#,Inheritance,Keyword,我目前正在使用C#,我正在使用一个库,在这个库中可以public override void,但这显然会覆盖整个方法 是否有“附加到方法”的关键字?比如说 class A { public virtual void HelloWorld() { Console.WriteLine("Do this first"); Console.ReadLine(); }

我目前正在使用C#,我正在使用一个库,在这个库中可以
public override void
,但这显然会覆盖整个方法

是否有“附加到方法”的关键字?比如说

    class A  
    {  
        public virtual void HelloWorld()  
        {  
            Console.WriteLine("Do this first");  
            Console.ReadLine();  
        }  
    }  

    class B : A  
    {  
        public append void HelloWorld() // <-- Special "append" keyword?
        {  
            Console.WriteLine("Then do this!");  
            Console.ReadLine();  
        }  
    }  

您可以通过关键字调用重写方法中的基本实现:


您需要修改代码以首先调用基本实现

class B : A  
{  
    public override void HelloWorld()
    {
        base.HelloWorld();
        Console.WriteLine("Then do this!");  
        Console.ReadLine();  
    }  
}

语言没有这种“附加”的概念,也不要求您或提供任何方式来强制始终调用基本实现。

您可以在基本方法中使用相同的功,在子方法中使用额外的功

class A
{
    public void DoSomething()
    {
        //Do Something
    }
}

class B: A
{
    public void DoSomethingExtra()
    {
        base.DoSomething();
        //Do extra things
    }
}

对于您所要求的内容没有特定的关键字,但是您可以从派生类调用实现来实现相同的功能

class A  
{  
    public virtual void HelloWorld()  
    {  
        Console.WriteLine("Do this first");  
        Console.ReadLine();  
    }  
}  

class B : A  
{  
    public override void HelloWorld()
    {  
        base.HelloWorld();
        Console.WriteLine("Then do this!");  
        Console.ReadLine();  
    }  
}

您可以通过
base
关键字调用父类方法

class A
{
    public virtual void HelloWorld()
    {
        Console.WriteLine("Do this first");
    }
}

class B : A
{
    public override void HelloWorld() // <-- Special "append" keyword?
    {
        base.HelloWorld();
        Console.WriteLine("Then do this!");
    }
}
A类
{
公共虚拟void HelloWorld()
{
Console.WriteLine(“先做这个”);
}
}
B类:A
{

公共覆盖无效HelloWorld()//您想如何调用该方法?通常,您只需从重写中调用基实现。这对您不起作用吗?在C#或任何编程语言AFAIK中都没有这样的事情。如果您可以重写,但仍然在OOP中执行基,则执行此追加是毫无意义的。@spender这是我今天学到的;)请对其进行编码,使其在没有警告的情况下编译。@Enigmativity谢谢,因为某种原因错过了。这不是我的反对票,但我可以告诉你,这是因为OP询问类
A
B
的方法具有相同的名称/头。你的方法使用两个不同的名称/头。哦,我想给出一个有意义的名称会使上下文更容易理解。从技术上讲,这个解决方案是可以的,但要小心。只有在您真正能够理解我的类B“是a”时才使用继承类A。这种情况的发生率远远低于您的想象。在其他情况下,您需要其他解决方案,例如,您可以使用接口,或者只是一个接一个地调用这两个方法,等等。您只能从一个类继承,因此在使用它时要小心。
class A  
{  
    public virtual void HelloWorld()  
    {  
        Console.WriteLine("Do this first");  
        Console.ReadLine();  
    }  
}  

class B : A  
{  
    public override void HelloWorld()
    {  
        base.HelloWorld();
        Console.WriteLine("Then do this!");  
        Console.ReadLine();  
    }  
}
class A
{
    public virtual void HelloWorld()
    {
        Console.WriteLine("Do this first");
    }
}

class B : A
{
    public override void HelloWorld() // <-- Special "append" keyword?
    {
        base.HelloWorld();
        Console.WriteLine("Then do this!");
    }
}