Date: 16.05.2019 6:15:37
Когда await FooAsync возвращает что-то, что тоже можно ждать (т.е. имеющее метод GetAwaiter). Например, когда FooAsync возвращает Task<Task<string>>.
Где это можно применить на практике - затрудняюсь сказать. В качестве абсурдного примера - если определить вот такой класс:
class T : System.Runtime.CompilerServices.INotifyCompletion { public T GetAwaiter() => this; public void OnCompleted(Action continuation) { } public bool IsCompleted => true; public T GetResult() => this; public static T Foo() => new T(); }То вызов вида "await await await await await await T.Foo();" успешно скомпилируется для любого количества await (но, разумеется, не будет иметь никакого видимого эффекта)
Автор: VadimTagil