次のリストがあります。
var myList = new List<KeyValuePair<string, object>>();
そしてこの関数:
public void Test(params KeyValuePair<string, object>[] list)
関数を使用するときに、リストをパラメーターに変換するにはどうすればよいですか?そのように:
Test(myList);
メソッド宣言KeyValuePair<string, object>[] list
は配列を受け入れることを示しているため、このようにリストを配列に変換する必要があります
Test(myList.ToArray());
元の質問を考えると、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は型ではなく単に「構文上の砂糖」であるため、根本的な真実はそうではありません。 "配列を渡すための代替構文を提供する機能。
リストをパラメーターとして受け入れられる形式に変換する必要があります。この場合、リストを配列に変換します
したがって、
var arrayParam = mylist.ToArray();
Test(arrayParam);