c# 配列 - params string[]で関数にstring[]arrayを代入する




初期化 一括 (4)

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

    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[]>);ように呼び出すことができますTest(1, <Some string[]>);

編集

msdn.microsoft.com/en-us/library/w5zay9db.aspxから:

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

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

私は関数void Test(int id, params string[] strs)を持っています。

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

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

それは "strs"を単一の文字列(配列ではない)とみなします。


実際には、 paramsはC#コンパイラによって処理される文法的な砂糖に過ぎないので、

この:

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

これになる:

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

これを試してみてください。

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

あなたはstrposstrrposを使うことができます

$bStartsWith = strpos($sHaystack, $sNeedle) == 0;
$bEndsWith = strrpos($sHaystack, $sNeedle) == strlen($sHaystack)-strlen($sNeedle);




c# string params