public ClassType(string type) {
Type = type;
}
public ClassType(string type,bool isArray=false) {
Type = type;
IsArray = isArray;
}
ClassType ct = new ClassType("adsf");
哪個構造選擇?C#默認可選參數選擇器
public ClassType(string type) {
Type = type;
}
public ClassType(string type,bool isArray=false) {
Type = type;
IsArray = isArray;
}
ClassType ct = new ClassType("adsf");
哪個構造選擇?C#默認可選參數選擇器
不需要可選參數的重載。請注意,這裏只是一個「是」或「否」的決定:「沒有自動填充的可選參數」比「自動填充一些可選參數」更可取,但在填入1或2之間沒有偏好。曖昧)
從C#4規範的7.5.3.2節:
否則如果M P的所有參數具有 相應的參數,而 默認參數需要是 取代至少M中的一個可選 參數 Q然後M P優於 M Q。
正如喬恩說,在兩個詞,第一個。比賽是'更清潔'。
是不是「第一個」三個字,不是兩個? ;) – 2010-07-13 13:06:49
是的,但'用三個字'聽起來不太酷:-) – Mau 2010-07-13 13:08:19
這引發了一個問題,「爲什麼不是編譯時錯誤?」 (我非常確定它是用C++編寫的,C#爲C++允許的更多邊緣情況提供了錯誤。) – 2010-07-13 14:10:56
@James:有一種方法與您給出的參數完全匹配,所以我認爲它被認爲是沒事的。我懷疑它可以更容易地將可選參數添加到現有類型。 – 2010-07-13 14:28:20
順便說一句:我剛剛將該代碼移植到VC++,並確認至少使用該編譯器時,它是一個錯誤。我認爲C++ 98標準使它總是一個錯誤。奇怪的是,C#讓它通過。我想這是爲了讓您將以前需要的參數轉換爲可選參數,但在這種情況下,您真的想知道您是否創建了一個模糊。 – 2010-07-13 14:59:33