web-dev-qa-db-ja.com

リストをパラメーターに変換するC#

次のリストがあります。

var myList = new List<KeyValuePair<string, object>>();

そしてこの関数:

public void Test(params KeyValuePair<string, object>[] list)

関数を使用するときに、リストをパラメーターに変換するにはどうすればよいですか?そのように:

Test(myList);
9
AgresivD

メソッド宣言KeyValuePair<string, object>[] listは配列を受け入れることを示しているため、このようにリストを配列に変換する必要があります

Test(myList.ToArray());
14
Nikhil Agrawal

元の質問を考えると、paramsキーワードがどのように機能するかを明確にする価値があると思います。これは1D配列のデコレータである必要があり、関数を呼び出すための代替構文を許可するだけです。

たとえば、文字列連結関数があるとします。

_public string Test(string[] names) {
    return String.Join(",", names);
}
_

これは、

Test(new[] { "Fred", "Wilma", "Pebbles"});

ただし、paramsキーワードを含めると、見栄えの良い呼び出し構文を使用できます。

_public string Test(params string[] names) {
    return String.Join(",", names);
}
_

Test("Fred", "Wilma", "Pebbles");

私はparamsキーワードの大ファンではありませんが、(この例のように)呼び出しコードを読みやすくするために時々それを使用します。

したがって、OPが「リストをparamsに変換するにはどうすればよいですか?」と尋ねた場合、paramsは型ではなく単に「構文上の砂糖」であるため、根本的な真実はそうではありません。 "配列を渡すための代替構文を提供する機能。

1
JSobell

リストをパラメーターとして受け入れられる形式に変換する必要があります。この場合、リストを配列に変換します

したがって、

var arrayParam = mylist.ToArray();
Test(arrayParam);
0
Lyubomir Dimov