使用可選參數(shù)沖突重載方法我有兩個重載方法,一個帶有可選參數(shù)。void foo(string a) { } void foo(string a, int b = 0) { }現(xiàn)在我打電話給: foo("abc");有趣的是第一次重載被調(diào)用。為什么第二次重載的可選值設(shè)置為零?說實話,我希望編譯器帶來一個錯誤,至少是一個警告,以避免無意中執(zhí)行錯誤的方法。這種行為的原因是什么?為什么C#團隊以這種方式定義它?
4 回答

墨色風雨
TA貢獻1853條經(jīng)驗 獲得超6個贊
為什么他們這樣定義?是否存在使用可選參數(shù)的重載有意義的場景?永遠不會使用默認值調(diào)用它,對嗎?但它可能導致不必要的錯誤。我仍然認為compliler應該至少給出一個警告。還有其他一些例子,開發(fā)人員必須明確告訴編譯器他知道他在做什么。例如,如果方法中的參數(shù)聲明為ref,我也需要在方法調(diào)用中顯式使用ref關(guān)鍵字; 否則它將無法編譯。
- 4 回答
- 0 關(guān)注
- 576 瀏覽
添加回答
舉報
0/150
提交
取消