ゆーとぴあ。ブログ

技術の備忘録や、日記などを投稿します

【C#】意外と知らない名前付き引数

C# 4.0から追加されたオプション引数と名前付き引数ですが、あんまり使われているところを見たことがなかったため意外と知らないのでは?と思い紹介することにしました。

オプション引数

C++でもあったデフォルト引数とも呼ばれるものです。
オプション引数が設定されているメソッドは、その引数を指定しなくても設定されたデフォルトの値で処理してくれるというものです。

void Hoge(int fuga = 0) {
    Debug.Log(fuga);
}

名前付き引数

設計によっては、メソッドの引数にこれとこれとこれとこれとこれを設定!みたいなのもあると思います。
ですがそういった場合、最後の値を設定したい場合全ての引数を記述しなければなりません。
そういった場合に使えるのが名前付き引数です。

private void Start()
{
    Hoge(fuga: "abc", isHogeHoge: true);
}

private void Hoge(int hoge = 0, string fuga = "a", bool isHogeHoge = false)
{
    Debug.Log(hoge);
    Debug.Log(fuga);
    Debug.Log(isHogeHoge);
}

もちろん、オプション引数が設定されていない引数は必須なので、全て記述する必要がありますが、上記のようなこの引数はデフォルトでいいけど、
後の引数は設定したいといった場合は、名前付き引数を用いて明示的にこの引数はこれっていうのを設定してあげれば大丈夫です。

まあこのような設計をそもそもしないというのが名前付き引数が使われてない一つの理由かもしれませんね...