Das Problem hier ist, dass Sie eine anonyme Methode definiert haben, die eine string
zurückgibt, aber versuchen, sie direkt einer string
zuzuordnen. Es ist ein Ausdruck, der, wenn er aufgerufen wird, string
erzeugt, ist es nicht direkt ein string
. Es muss einem kompatiblen Delegattyp zugewiesen werden. In diesem Fall ist die einfachste Wahl ist Func<string>
Func<string> temp =() => {return "test";};
Dies wird durch ein wenig Gießen in einer Zeile durchgeführt werden kann oder der Delegat Konstruktor mit der Art des Lambda durch einen Aufruf gefolgt zu etablieren.
string temp = ((Func<string>)(() => { return "test"; }))();
string temp = new Func<string>(() => { return "test"; })();
Hinweis: Die beiden Proben könnten auf die Ausdrucksform kurzgeschlossen werden, die die { return ... }
Func<string> temp =() => "test";
string temp = ((Func<string>)(() => "test"))();
string temp = new Func<string>(() => "test")();
Danke. Also keine Möglichkeit, alles in einer Zeile zu machen (einschließlich String zuweisen)? Der Wert, den ich haben will ("test", was tatsächlich eine Variable im wirklichen Leben ist), ist in einem anderen Lambda, also verliere ich den Umfang, wenn ich versuche, wie oben beschrieben zu definieren. – 4thSpace
@ 4thSpace es kann in einer Linie mit einigen bösen Casting getan werden. Ich habe meine Antwort aktualisiert, um den Weg zu zeigen – JaredPar
Oder in diesem Fall nur 'Func temp =() =>" test ";'. –
Gabe