>>181
レスどうもありがとうございます。

async Task SayHello3() { await SayHello(); await SayHello(); await SayHello(); }
async Task SayHello2() { await SayHello(); await SayHello(); }
async Task SayHello1() { await SayHello(); }

は問題ないのに

async Task SayHello0() { }

ではなく

Task SayHello0() { return Task.CompletedTask; }

と書かなければならないことに不自然さを感じていたのですが、
2つ目の SayHello0() を単独で見れば、おっしゃる通り何をしているかは明確ですし、
async に固執するのもあまり良くなさそうですね。

async はそのままにして警告を抑制する方法を提案してくださる方もいらっしゃいますし
私としてもそちらの選択肢を完全に切り捨てるまでの確信は持てていないのですが、
Task.CompletedTask を返す方法も決して悪いものではないと分かりとても勉強になりました。


>>182
確かにそのとおりですね。失礼いたしました。
ただ問題なのは、「目印を付けただけでエラーになる」のではなく、
「目印を付けないとエラーになるのに目印を付けても警告が残る」という点でして、
せっかくの目印の機能を気持ちよく使うことができず、どうしたものかと考えております。