Dada:

public void DoSomething(Func<List<string>, string> act){
   foreach(var thing in [TheListPassedIn]){
      act(thing);
   }
}

¿Cuál es el código adecuado para obtener direccionamiento en la lista del parámetro denominado "actuar"?

-1
JWP 27 ene. 2015 a las 12:35

3 respuestas

La mejor respuesta

Puede pasar su lista y la función por separado y crear una nueva lista fácilmente usando Linq:

public List<string> ApplyFuncToEachItem(List<int> myList, Func<int, string> myFunc)
{
    return myList.Select(myFunc).ToList();
}

Ejemplo:

var numbers = Enumerable.Range(0,10).ToList();
var myListOfStrings = ApplyFuncToEachItem(numbers, n => "bla " + n.ToString());
1
EagleBeak 27 ene. 2015 a las 09:52

Creo que confundes algunas de las cosas aquí. Su método obtiene un parámetro, que es una transformación de una lista a una cadena. Aquí no hay ninguna lista. La transformación hace algo, pero debe crear la lista en su método DoSomething y probablemente llamar a la transformación con su lista como parámetro. Si este no es el flujo de trabajo, ¡probablemente definió su método de manera incorrecta!

1
MBoros 27 ene. 2015 a las 09:42

No pasa una lista de cadenas como parámetro al método. De hecho, pasa una función que tiene una Lista como parámetro de entrada y devuelve una sola cadena. No hay una lista concreta de cadenas involucradas.

1
Thomas Lielacher 27 ene. 2015 a las 09:42