Tengo esta siguiente lista:
var myList = new List<KeyValuePair<string, object>>();Y esta función:
public void Test(params KeyValuePair<string, object>[] list)¿Cómo puedo hacer una conversión de la lista a parámetros cuando uso la función? Como eso:
Test(myList);La declaración de su método KeyValuePair<string, object>[] list indica que aceptará una matriz, por lo que debe convertir su lista en una matriz como esta
Test(myList.ToArray());Dada la pregunta original, creo que vale la pena aclarar cómo funciona la palabra clave params . Tiene que ser un decorador en una matriz 1D y simplemente permite una sintaxis alternativa para llamar a la función.
Por ejemplo, si tenemos una función de concatenación de cadenas:
public string Test(string[] names) { return String.Join(",", names); }Esto se puede llamar usando
Test(new[] { "Fred", "Wilma", "Pebbles"});
pero la inclusión de la palabra clave params simplemente permite una sintaxis de llamada más amigable:
public string Test(params string[] names) { return String.Join(",", names); } Test("Fred", "Wilma", "Pebbles");
No soy un gran admirador de la palabra clave params , pero a veces la uso para hacer que el código de llamada sea más legible (como en este ejemplo).
Entonces, cuando el OP pregunta " ¿Cómo puedo hacer una conversión de la lista a params? ", La verdad subyacente es que no lo hace, ya que params no es un tipo y es simplemente una función de "azúcar sintáctico" para dar una sintaxis alternativa para pasar en una matriz.
Debe convertir la lista al formulario que se acepta como parámetro. En este caso, convierta List to Array
Por eso,
var arrayParam = mylist.ToArray(); Test(arrayParam);