引用: 即効入門 C#プログラミング すぐに現場で使える知識 by 中 博俊さんら
...引数は、「パラメータ名: 値」というように書くことで、任意の順番で値を渡すことができます。この場合、任意の場所の引数を省略できます。
using System;
public class Test
{
public static void Main()
{
func1(1,2);
func1(y:1, x:2);
func1(y:4);
}
static void func1(int x=3, int y=1) {
Console.WriteLine("x={0} y={1}", x, y);
}
}
結果
Success time: 0.04 memory: 23992 signal:0
x=1 y=2
x=2 y=1
x=3 y=4
func1()の三番目の呼び出しではxの値はdefault値(int x=3)が使われる。
default引数の使用はコードリーディングがしにくくなるので個人的には使わない。また、禁止しているコーディングルールもある。
そうなると、名前付き引数渡しの用途は以下だろうか。
- 引数の指定順序を変更可能
- 引数の名前を明確化
上記の二番目はReadable Codeなどで推奨している
func1(/* x= */1, /* y= */2)
という書き方を
func1(x:1, y:2)
で書けるということなのだろう。
以前、自分の記事に対して、Fortran90か95で名前付き引数の使い方をコメントいただいたが、検索しても出てこない。。。
RubyやFortranでは「キーワード引数」という用語のようだ。