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