Inlining functions ist eine Compiler-Optimierung, die die Funktionsaufruf-Site durch den Body des Angerufenen ersetzt. Diese Optimierung wird für regular C# functions unterstützt.Können Async-Funktionen inline sein?
Async Funktionen, die das async-await Muster in C# 5.0 haben eine besondere Erklärung zu unterstützen, die die async
Modifikator und Verpackung Rückgabewerte mit Task<>
beinhaltet.
Können asynchrone Funktionen auch inline sein?
Beispiel:
Angenommen, ich habe diese Funktionen:
private async Task<int> CallerAsync() {
return await SomeOperationAsync();
}
Extra Credit:
private async Task<int> CalleeAsync() {
return await SomeOperationAsync();
}
private async Task<int> CallerAsync() {
return await CalleeAsync();
}
Konnten sie optimiert werdenWenn es unterstützt wird, wer kann entscheiden, was inline ist? Der Compiler? Die JIT? mich?
Wenn es nicht unterstützt wird, sollte ich mich darum sorgen und übermäßige Wrapper vermeiden, die ich manchmal für die Lesbarkeit hinzufüge?
Keine Notwendigkeit, eine weitere Aufgabe zu erstellen. 'private Task CalleAsync() { Rückgabe SomeOperationAsync(); } ' –
I4V
@ I4V Natürlich. Beachten Sie, dass dies nur ein simples Beispiel ist. Wirkliche Lebensszenarien werden wahrscheinlich etwas komplizierter sein :) – talkol