El problema aquí es que ha definido un método anónimo que devuelve un string
pero está intentando asignarlo directamente a string
. Es una expresión que cuando se invoca produce un string
, no es directamente un string
. Debe asignarse a un tipo de delegado compatible. En este caso la opción más fácil es Func<string>
Func<string> temp =() => {return "test";};
Esto se puede hacer en una línea por un poco de colada o mediante el constructor delegado para establecer el tipo de la lambda seguida de una invocación.
string temp = ((Func<string>)(() => { return "test"; }))();
string temp = new Func<string>(() => { return "test"; })();
Nota: Ambas muestras podría provocar un cortocircuito a la forma de expresión que carece de la { return ... }
Func<string> temp =() => "test";
string temp = ((Func<string>)(() => "test"))();
string temp = new Func<string>(() => "test")();
Gracias. Entonces, ¿no hay manera de hacer todo en una línea (incluida la asignación de cadena)? El valor que quiero ("prueba", que en realidad es una variable en la vida real) está dentro de otra lambda, así que pierdo alcance si trato de definir lo que tengo arriba. – 4thSpace
@ 4thSpace se puede hacer en una línea con algún mal lanzamiento. Actualicé mi respuesta para mostrar el camino – JaredPar
O en este caso, simplemente 'Func temp =() =>" test ";'. –
Gabe