将列表转换为参数C#

我有以下列表:

var myList = new List<KeyValuePair>(); 

而这个function:

 public void Test(params KeyValuePair[] list) 

使用该function时,如何将列表转换为参数? 像那样:

 Test(myList); 

您方法声明KeyValuePair[] list声明它将接受一个数组,因此您需要将列表转换为这样的数组

 Test(myList.ToArray()); 

您应该将列表转换为接受为参数的表单。 在这种情况下,将List转换为Array

因此,

 var arrayParam = mylist.ToArray(); Test(arrayParam); 

鉴于原始问题,我认为值得澄清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不是一种类型,只是一种“语法糖”function来提供替代语法用于传入数组。