為什么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);會導致編譯錯誤。
為什么帶有可空值的C#重載不是模棱兩可的?
慕的地6264312
2021-05-05 14:12:08