Ich habe eine Funktion, die eine Task<String>
zurückgibt, um diese Task
zu konstruieren Ich muss eine anonyme async
Funktion verwenden, weil ich mehrere Anrufe innerhalb der await
innerhalb der Task
. Ich habe festgestellt, dass ich ""
zurückkehren kann, aber wenn ich versuche, null einen Fehler zurückzugeben entstehen (Visual Studio Nachricht)Rückgabetypen innerhalb einer Aufgabe, die eine anonyme asynchrone Funktion ausführt?
Anonyme Funktion Delegaten für ungültig zu erklären umgewandelt Rückkehr kann einen Wert nicht zurück
Async Lambda-Ausdruck in einem umgewandeltes 'Task', der Delegat zurückgibt, kann keinen Wert zurückgeben. Wolltest du "Aufgabe" zurückgeben?
Eine Funktion das gleiche Problem zeigt
public virtual Task<String> FooBar()
{
return Task<String>.Run(async() =>
{
await Task.Delay(1500);
return ""; // OK
//return null; // Error
});
}
Was hier geschieht?
Wäre es passender zu return await Task.FromResult<String>(null);
, wenn ich einen Nullwert zurückgeben möchte?
Warum verwenden Sie 'Task.Run' an erster Stelle? Sie haben keine CPU-gebundene Arbeit, Sie haben asynchrone Arbeit; entferne diesen Anruf einfach ganz, da hier nichts erreicht wird. – Servy
Es ist bemerkenswert, 'Task .Run' ist genau das gleiche wie' Task.Run', da es eine statische Methode für die Basisklasse ist. Der Compiler muss weiterhin den Rückgabetyp von dem Delegat ableiten, der für "Ausführen" bereitgestellt wird (was nicht möglich ist, wenn nur "null" verwendet wird). –
@CharlesMager das macht Sinn und klärt ein anderes "Problem" auf. Visual Studio vergröbert den Bereich "" leicht und stellt fest, dass er nicht benötigt wird. Ich wusste, dass es irgendwie auf den Type hindeutete, aber jetzt sehe ich genau, wie es das macht. –
KDecker