2013-04-02 4 views
10

私には関数void Test(int id, params string[] strs)があります。params string []を持つ関数にstring [] arrayを代入する

文字列をstrs引数として渡すにはどうすればよいですか?私が電話したとき:

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

"strs"は単一の文字列(配列ではない)として扱われます。

+2

現在のコードが機能しない場合は、どのようなエラーが発生していますか? – NilsH

+1

あなたはどの言語を使っていますか? – Simon

+0

私はC#を使用しています。私は配列文字列全体をparams文字列[]に代入するだけで解決することができた問題です。 –

答えて

7

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

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 
    } 

あなたはMSDN website on paramsからちょうどこのTest(1, <Some string[]>);

などの編集

それを呼び出すことができます。

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

したがって、TestメソッドをTest(1);と呼び出すこともできますが、コンパイラエラーは発生しません。

実際
24

このように、paramsは、C#コンパイラによって処理だけ糖衣構文です:

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

はこのようになります。

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

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

var myStringArray = new string[] {"a", "b", "c"}; 
Test(myStringArray) 
関連する問題