今回は、オプション引数と名前付け引数についてです。
元々、Visual Basic等では存在していた機能がやっとC#にも
追加されました。
オプション引数は、文字通り特定の引数をオプション扱いとする機能。
名前付け引数は、引数を指定する際に、値とともに引数名を指定して
設定する機能です。
それぞれ以下のようにして記述します。
[オプション引数の例]
void OptionalParamsMethod(string word1 = "", string word2 = "", string word3 = "") { Console.WriteLine("{0}, {1}, {2}", word1, word2, word3); }
上記の例では、2番目と3番目の引数がオプション引数となっています。
呼び出す際は、
OptionalParamsMethod("word1", "word2", "word3"); OptionalParamsMethod("word1", "word2"); OptionalParamsMethod("word1"); OptionalParamsMethod();
という呼び方が出来ます。注意点として引数のオプション値として
指定できるのは定数値となります。
名前付け引数は、引数指定時に引数の名前を指定します。
// 2番目の引数のみを設定して呼び出し. OptionalParamsMethod(word2: "hoge"); // 1番目と3番目のみを設定して呼び出し // 且つ、指定する際は3番目、1番目という順序で指定 OptionalParamsMethod(word3: "word3", word1: "word1");
名前の指定方法は、以下の通りです。
引数の名前: 値
以下、サンプルです。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace NamedAndOptionalParameters01 { class Program { static void Main(string[] args) { (new Program()).Execute(); Console.WriteLine("Press any key to exit..."); Console.ReadLine(); } private void Execute() { /////////////////////////////////////////////////////////////////////////// // // オプション引数 // // 利用方法は、Visual Basicのoptionalとほぼ同じ. // 指定されていないパラメータの場合は、メソッド定義で設定した初期値が設定される。 // // 全ての引数を指定. OptionalParamsMethod("word1", "word2", "word3"); // 最後の引数を省略. OptionalParamsMethod("word1", "word2"); // 最初の引数以外を省略. OptionalParamsMethod("word1"); // 全ての引数を省略 OptionalParamsMethod(); /////////////////////////////////////////////////////////////////////////// // // 名前付き引数 // // Visual BasicやPython等の言語でおなじみの機能 // 指定したい引数の名前とともに値を設定して // 設定したいパラメータのみを指定したり出来る。 // また、名前を付けて呼ぶので、引数の指定順序も // 好きに出来る。 // // 名前を指定する場合は以下の書式で行う。 // 引数名: 値 // // 2番目の引数のみを設定して呼び出し. OptionalParamsMethod(word2: "hoge"); // 1番目と3番目のみを設定して呼び出し // 且つ、指定する際は3番目、1番目という順序で指定 OptionalParamsMethod(word3: "word3", word1: "word1"); } // optional引数を持つメソッド. void OptionalParamsMethod(string word1 = "", string word2 = "", string word3 = "") { Console.WriteLine("{0}, {1}, {2}", word1, word2, word3); } } }