1
static void F(string ham, object jam = null) { }
static void F(string spam, string ham, object jam = null) { }
...
F("meat product", null);
這個奇怪的代碼的開發人員顯然是試圖在兩端作出可選參數;目的是垃圾郵件和堵塞都是可選的,但總是需要火腿。兩端可選參數
編譯器選擇了哪個重載,爲什麼?
(我從blog of Eric Lippert問題)被選擇的第二過載
什麼是「對象」,什麼是「空」?它們不是標準C++的一部分。不知道什麼是構造函數對象,不可能完全回答這個問題。你確定這不是C#代碼或什麼?無論如何,如果`null`對於字符串構造函數的單個參數不是有效的,那麼它只能匹配第一個重載。 – 2011-02-16 09:21:42
這是C#,這是博客條目http://blogs.msdn.com/b/ericlippert/archive/2011/02/10/optional-arguments-on-both-ends.aspx – Christian 2011-02-16 09:22:39