gpt4 book ai didi

c# - 虚函数

转载 作者:太空狗 更新时间:2023-10-29 22:14:44 30 4
gpt4 key购买 nike

我不太明白 - 我什么时候应该使用虚函数?如果有人能向我解释一下,我会很高兴,谢谢。

最佳答案

虚拟方法是 polymorphism 的关键.标记为虚拟的方法可以在派生类中被覆盖,以改变或特化类的行为。

例子:

class Base
{
public virtual void SayHello()
{
Console.WriteLine("Hello from Base");
}
}

class Derived : Base
{
public override void SayHello()
{
Console.WriteLine("Hello from Derived");
}
}

static void Main()
{
Base x = new Base();
x.SayHello(); // Prints "Hello from Base"
x = new Derived();
x.SayHello(); // Prints "Hello from Derived"
}

请注意,您可以重新声明(而不是重写)一个非虚方法,但在这种情况下它不会参与多态性:

class Base
{
public void SayHello() // Not virtual
{
Console.WriteLine("Hello from Base");
}
}

class Derived : Base
{
public new void SayHello() // Hides method from base class
{
Console.WriteLine("Hello from Derived");
}
}

static void Main()
{
Base x = new Base();
x.SayHello(); // Prints "Hello from Base"
x = new Derived();
x.SayHello(); // Still prints "Hello from Base" because x is declared as Base
Derived y = new Derived();
y.SayHello(); // Prints "Hello from Derived" because y is declared as Derived
}

关于c# - 虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6520394/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com