gpt4 book ai didi

C# - 关键字用法 virtual+override 与 new

转载 作者:IT王子 更新时间:2023-10-29 03:29:42 29 4
gpt4 key购买 nike

在基类型“virtual”中声明一个方法然后使用“override”关键字在子类型中覆盖它与简单地使用有什么区别在子类型中声明匹配方法时的“new”关键字?

最佳答案

我总是发现这样的事情用图片更容易理解:

同样,采用 joseph daigle 的代码,

public class Foo
{
public /*virtual*/ bool DoSomething() { return false; }
}

public class Bar : Foo
{
public /*override or new*/ bool DoSomething() { return true; }
}

如果您随后这样调用代码:

Foo a = new Bar();
a.DoSomething();

注意:重要的是我们的对象实际上是一个 Bar , 但我们将其存储在 Foo 类型的变量中(这类似于强制转换)

那么结果会是这样,看你有没有用virtual/overridenew在声明你的类(class)时。

Virtual/Override explanation image

关于C# - 关键字用法 virtual+override 与 new,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/159978/

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