C# 在一般编程中,是否有一种方法;“附加到函数中”;而不是凌驾于整个事情之上?
我目前正在使用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(); }
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!");
}
}