将列表转换为参数 C#

Convert list to params C#

我有以下列表:

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

还有这个函数:

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

如何在使用函数时将列表转换为参数? 像那样:

Test(myList);

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

因此,

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

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

Test(myList.ToArray());

考虑到最初的问题,我认为有必要澄清一下 params 关键字的作用。 它必须是一维数组上的装饰器,并且只允许使用替代语法来调用该函数。

例如,如果我们有一个字符串连接函数:

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 询问“我如何将列表转换为参数?”时,基本事实是您不需要,因为参数不是type 并且只是一个 "syntactical sugar" 特性,为传入数组提供了另一种语法。