為什么C#允許以下方法重載:void F(int a) { Console.WriteLine(1); }void F(int? a) { Console.WriteLine(2); }如果我運(yùn)行該代碼:A a = new A();a.F(1); 它打印1。編譯器如何知道要調(diào)用哪一個(gè)。這不是模棱兩可的嗎?我認(rèn)為可空類型背后的想法是,您可以傳入正確類型的值,也可以傳入null。所以我應(yīng)該能夠調(diào)用第一F與(1)和第二F帶(1)或(null)。我這里有一個(gè)很好的例子。更新: 閱讀答案后,我感到困惑的原因是我認(rèn)為可為空的參數(shù)與可選參數(shù)同義。確實(shí),用替換第二種方法void F(int a = 0);會(huì)導(dǎo)致編譯錯(cuò)誤。
為什么帶有可空值的C#重載不是模棱兩可的?
慕的地6264312
2021-05-05 14:12:08