Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

paramsキーワードで少しだけ楽をする

メソッドの引数が配列の場合、paramsキーワードを付加できます。これで要素を列挙するだけで配列を渡せるので、呼び出し側は少しだけ楽ができます。

private static void Hoge(string[] foo) {
}

private static void Fuga(params string[] foo) {
}

static void Main(string[] args) {
    Hoge(new string[] { "foo1", "foo2" });  // 配列インスタンス生成が必要。
    Fuga("foo1", "foo2");   // 要素の列挙だけで呼び出せる。
}

残念ながらBCLではこの点が徹底されていません。例えば、System.IO.Path.Combine。.NET3.5まではparams指定がありませんでした。.NET4でようやくparams指定ありのオーバーロードが追加されています。

Path.Combine メソッド (String[]) (System.IO)
文字列の配列を 1 つのパスに結合します。