2009-07-30 7 views
16

他の言語では、c#デフォルトパラメータ

cookEgg(boolean hardBoiled = true) 

のようなメソッドシグネチャを設定することができます。メソッドコールでパラメータを受け取らない場合、パラメータhardboiledがtrueにデフォルト設定されます。 どうすればCでこれを達成できますか?

多くのおかげで

答えて

30

は、あなたがメソッドをオーバーロードする必要があります。

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

C#4.0は、オプションの引数を追加します - あなたは正確にあなたの元のサンプルのようなコードを書くことができるようになります、そしてそれ期待どおりに動作します。

+1

私はこの機能を楽しみにしています。むしろ、この機能を現時点で使用するためにオーバーロードされたメソッドを作成する必要があります。私はまた、静的な拡張メソッド(System.Stringのような静的クラスを拡張するもの)を期待しています。 – Zack

+0

C#3.0で 'System.String'の拡張メソッドを簡単に定義できるので、何かが欠けているはずです。 –

2

これはあなたが正確に見えるものではありませんが、私はのパラメータ引数が別の答えだと思います。

void test(params int []arg) { }