2009-07-30 225 views
16

在其他語言中我可以設置方法簽名一樣C#默認參數

cookEgg(boolean hardBoiled = true) 

這個默認個煮爲真,如果我沒有收到在方法調用的參數的參數。我如何在c#中實現這一點?

非常感謝

回答

30

目前,你必須重載方法:

void cookEgg(bool hardBoiled) { ... } 
void cookEgg() { cookEgg(true); } 

C#4.0將添加可選參數 - 你就可以編寫代碼完全按照你的原始樣本中,它將按照您的預期工作。

+1

我很期待這個功能tbh。相當惱人的是,現在必須使重載方法具有此功能。我也希望靜態擴展方法(擴展靜態類,如... System.String或其他)。 – Zack 2009-07-30 05:22:35

+0

我必須缺少一些東西,因爲您可以在C#3.0中輕鬆定義'System.String'的擴展方法。 – 2009-07-30 05:37:06

2

這不是你看起來完全一樣,但我認爲params的論點是另一個答案。

void test(params int []arg) { }