rksoftware

Visual Studio とか C# とかが好きです

C# 2.0 以降の新機能の確認 - C# 7.2 - 末尾以外の名前付き引数

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

末尾以外の名前付き引数

 https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments#named-arguments
 引数の順番とあっている位置であれば、より後方に名前付きでない引数があっても名前付き引数にできる。

MyMethod(1, 2, c: 3, 4);         // ← c の位置が順番とあっているので OK
MyMethod(1, 2, d: 3, c: 4);      // ← 名前付きが後方に集まっているので OK
// MyMethod(1, c: 2, b: 3, 4);  // ← c、b の位置が順番とあっていないので NG
MyMethod(d: 1, c: 2, b: 3, a: 4);  // ← 全て名前付きなので OK
// MyMethod(1, c: 2, b: 3, a: 4); // ← a の位置は既に値が書かれている (1) ので NG}

static void MyMethod(int a, int b, int c, int d) { ; }