为了账号安全,请及时绑定邮箱和手机立即绑定

为什么带有可空值的C#重载不是模棱两可的?

为什么带有可空值的C#重载不是模棱两可的?

C#
慕的地6264312 2021-05-05 14:12:08
为什么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 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信