Este es mi código de prueba:argumento de tipo 'vacío' no se puede asignar al parámetro de tipo 'System.Action'
class PassingInActionStatement
{
static void Main(string[] args)
{
var dsufac = new DoSomethingUsefulForAChange();
dsufac.Do(WriteToConsole);
dsufac.Do2(s => WriteToConsoleWithSomethingExtra("Test"));
dsufac.Do(WriteToConsoleWithSomethingExtra("Test")); // Does not compile
}
internal static void WriteToConsole()
{
Console.WriteLine("Done");
}
internal static void WriteToConsoleWithSomethingExtra(String input)
{
Console.WriteLine(input);
}
}
internal class DoSomethingUsefulForAChange
{
internal void Do(Action action)
{
action();
}
internal void Do2(Action<String> action)
{
action("");
}
}
Las 2 primeras llamadas de trabajo, pero me pregunto por qué el tercero no lo hace. No me gusta el código dentro de Do2, ya que parece extraño que tengo tipo de tipo action("")
allí para que funcione.
¿Podría alguien explicar las 2 cosas que no entiendo, por favor?
- ¿Por qué no puedo escribir la tercera línea de esa manera con llamar Do
- ¿Por qué tengo que escribir la acción ("") a fin de conseguir que funcione en Do2
siempre he marcado respuestas que me ayudaron. Si no hay una solución que proporcione algo útil, no la marque hasta que obtenga la respuesta que me ayuda. –