C# – 沒有預設參數(default parameters)

嗯哼…
今天在對 methord 做擴充時,才赫然發現這個事情
沒想到 C# 沒有預設參數這種機制,真給它有點小麻煩的…

Why doesn't C# support default parameters?
似乎是 C# team 成員的文章,解釋不加入的原因。

(翻譯) 為什麼C#不提供默認參數(default parameter)?

上面那篇的翻譯,加上翻譯者的一些解釋,讓人更清楚^^

主要就是:

  1. Lib/Framwork若有改變,用戶代碼需重新compile。
  2. 會造成C#和MSIL差異太大。
  3. XML Document和intellisense難以產生。

這三點原因,至於以後會不會提供,就不得而知了XD
我相信上面兩篇應該很清楚原因,我就不再贅述。

接著簡單用重載(overload)來達成和預設參數類似的效果吧!

 void AddNumber(int a, bool isReal = true)
{ … }

這是我們想要的預設參數。

 // 被重載的對象
 void
AddNumber(int a, bool isReal)
 { … }

 // 預設參數的假象
 void AddNumber(int a)
 {
     AddNumber(a, true);
 }

就本質上來說,還是很不一樣…
但有時候要用到,也還是得應急一下吧?哈哈!

–End

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s