Il problema qui è che è stato definito un metodo anonimo che restituisce un string
ma sta tentando di assegnarlo direttamente a string
. È un'espressione che quando invocato produce uno string
non è direttamente un string
. Deve essere assegnato a un tipo di delegato compatibile. In questo caso la scelta è facile Func<string>
Func<string> temp =() => {return "test";};
Questo può essere fatto in una linea da un bit di fusione o utilizzando il costruttore delegato per stabilire il tipo di lambda seguita da una chiamata.
string temp = ((Func<string>)(() => { return "test"; }))();
string temp = new Func<string>(() => { return "test"; })();
Nota: Entrambi i campioni potrebbe subire un cortocircuito alla forma di espressione che manca la { return ... }
Func<string> temp =() => "test";
string temp = ((Func<string>)(() => "test"))();
string temp = new Func<string>(() => "test")();
Grazie. Quindi non c'è modo di fare tutto su una riga (incluso l'assegnazione di una stringa)? Il valore che voglio ("test", che in realtà è una variabile nella vita reale) si trova all'interno di un altro lambda, quindi perdo le scope se provo a definire come hai sopra. – 4thSpace
@ 4thSpace può essere fatto in una riga con un cast malvagio. Ho aggiornato la mia risposta per mostrare il modo in cui – JaredPar
O in questo caso, solo 'Func temp =() =>" test ";'. –
Gabe