gpt4 book ai didi

抽象方法中的 C# 可选参数

转载 作者:行者123 更新时间:2023-11-30 14:41:49 25 4
gpt4 key购买 nike

给定:

interface IFoo
{
void Print(string text = "abc");
}

class Bar : IFoo
{
public void Print(string text = "def")
{
Console.WriteLine(text);
}
}

class Program
{
static void Main(string[] args)
{
Bar b = new Bar();
b.Print();

IFoo f = b as IFoo;
f.Print();
}
}

输出是:

def
abc

是我还是这有点奇怪?最初我在这两种情况下都期待“def”。但是,如果是这种情况,那么可选参数抽象方法将毫无用处。但对于讨厌的错误来说,这似乎仍然是一个很好的起点。

最佳答案

可选参数是编译器的一项功能,编译器只能处理编译时可用的类型信息。因此,这些值取自您正在操作的引用类型,而不是实际的运行时类型。在这个简单的测试用例中,可以通过静态分析找出 f 的实际类型,但这在现实生活中的例子中很少起作用,因此没有实现。

关于抽象方法中的 C# 可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3743810/

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