为什么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);会导致编译错误。
1 回答
- 1 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消