web-dev-qa-db-ja.com

params string []を使用してstring []配列を関数に割り当てる

関数void Test(int id, params string[] strs)があります。

文字列の配列をstrs引数としてどのように渡しますか?私が電話するとき:

Test(1, "a, b, c");

「strs」は単一の文字列(配列ではなく)として受け取ります。

17
Yuen Li

実際paramsはC#コンパイラによって処理される単なる構文上のシュガーであるため、

この:

void Method(params string[] args) { /**/ }
Method("one", "two", "three");

これになります:

void Method(params string[] args) { /**/ }
Method(new string[] { "one", "two", "three" })
32

私はこれをテストし、それは動作します:

_    private void CallTestMethod()
    {
        string [] strings = new string [] {"1", "2", "3"};
        Test(1, strings);

    }

    private void Test(int id, params string[] test)
    {
        //Do some action with input
    }
_

Test(1, <Some string[]>);のように呼び出すことができます

編集

paramsのMSDN Webサイト から:

Paramsキーワードを使用すると、可変数の引数を取るメソッドパラメーターを指定できます。パラメーター宣言で指定されたタイプの引数のコンマ区切りリスト、または指定されたタイプの引数の配列を送信できます。引数を送信することもできません。メソッド宣言のparamsキーワードの後に​​追加のパラメーターは許可されず、メソッド宣言では1つのparamsキーワードのみが許可されます。

したがって、コンパイラエラーなしで、このTest(1);のようなTestメソッドを呼び出すこともできます。

9
jordanhill123

これを試してください。

var myStringArray = new string[] {"a", "b", "c"};
Test(myStringArray)
1
fhnaseer