可変長のメソッドを作る

もくじ

目次(WPF/xaml/C#/C++関連メモ) - tera1707’s blog

やりたいこと

コンソールアプリで、黒窓になにか表示させるときに書くConsole.WriteLine()は、引数を複数とって、1つ目の引数の文字列の中の{n}を2個目以降の引数に置き換えてくれるような動きをする。

Console.WriteLine("{0}, {1}, {2}", 1, 2, 3);

以前作ったログを出力するクラスで、引数で受けた複数の文字列を、","で区切ってCSVとして出力したい、とおもったときに、Console.WriteLine()と同じように、複数の可変長の引数を取って、それを","で区切りたい。

やりかた

メソッドの引数にparamsというキーワードを付ける。

サンプル

{
    // 可変長の引数をとるメソッドに、好きな個数のパラメータを書く
    var v = Add(1,2,3,4,5,6,7,8,9);

    // 可変長の引数をとるメソッドに、引数の配列を渡す
    var d2 = new int[] { 1,2,3,4,5,6,7,8,9 };
    var v2 = Add(d2);

    // どちらも同じ効果
    Console.WriteLine("Answer1 : {0}", v);
    Console.WriteLine("Answer2 : {0}", v2);
}

int Add(params int[] data)
{
    var ret = 0;

    foreach (var d in data)
    {
        ret += d;
    }
    return ret;
}

参考

ufcpp.net