次のように、任意の位置でパラメータを省略できる簡単な方法は、null許容型を利用することです。
public void PrintValues(int? a = null, int? b = null, float? c = null, string s = "")
{
if(a.HasValue)
Console.Write(a);
else
Console.Write("-");
if(b.HasValue)
Console.Write(b);
else
Console.Write("-");
if(c.HasValue)
Console.Write(c);
else
Console.Write("-");
if(string.IsNullOrEmpty(s)) // Different check for strings
Console.Write(s);
else
Console.Write("-");
}
文字列はすでにnull許容型であるため、?。
このメソッドを取得すると、次の呼び出しがすべて有効になります。
PrintValues (1, 2, 2.2f);
PrintValues (1, c: 1.2f);
PrintValues(b:100);
PrintValues (c: 1.2f, s: "hello");
PrintValues();
この方法でメソッドを定義すると、名前を付けて必要なパラメーターのみを自由に設定できます。名前付きパラメータとオプションパラメータの詳細については、次のリンクを参照してください。
名前付きおよびオプションの引数(C#プログラミングガイド)@ MSDN