将列表转换为参数 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" 特性,为传入数组提供了另一种语法。
我有以下列表:
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" 特性,为传入数组提供了另一种语法。