gpt4 book ai didi

c# - 为什么输出默认值来自基类?

转载 作者:太空狗 更新时间:2023-10-30 00:59:32 25 4
gpt4 key购买 nike

为什么输出是B5,谁能解释一下?

class A
{
public virtual void M(int x=5)
Console.Write("A"+x);
}

class B:A
{
public override void M(int x=6)
Console.Write("B"+x);

}
class Program
{
static void Main(string[] args)
{
A a = new B();
a.M();
}
}
//Output is : B5

我期望输出是 B6,但实际输出是 B5。

最佳答案

默认参数不会像您期望的那样工作。它们是在编译期间硬连接到方法调用中的常量。并且在编译期间,唯一已知的类型是 A 的类型。

你的代码等同于:

   static void Main(string[] args)
{
A a = new B();
a.M(5);
}

关于c# - 为什么输出默认值来自基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58007538/

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