为什么C#允许以下方法重载:
void F(int a) { Console.WriteLine(1); }
void F(int? a) { Console.WriteLine(2); }
如果我运行该代码:
A a = new A();
a.F(1);
它打印1。编译器如何知道要调用哪一个。这不是模棱两可的吗?
我认为可空类型背后的想法是,您可以传入正确类型的值,也可以传入null。所以我应该能够调用第一F与(1)和第二F带(1)或(null)。
我这里有一个很好的例子。
更新: 阅读答案后,我感到困惑的原因是我认为可为空的参数与可选参数同义。
确实,用替换第二种方法void F(int a = 0);会导致编译错误。
相关分类