Closed ufcpp closed 5 years ago
as
で動的に IAsyncDisposable
の存在を確認したりはしないらしい。
以下のコードだと DisposeAsync
は呼ばれない。
using System;
using System.Threading.Tasks;
class A
{
public A GetAsyncEnumerator() => this;
public int Current => 0;
public ValueTask<bool> MoveNextAsync() => default;
}
class B : A, IAsyncDisposable
{
public ValueTask DisposeAsync()
{
Console.WriteLine("ここは絶対に呼ばれないみたい");
return default;
}
}
public class Program
{
public static async Task Main()
{
await foreach (var x in new B()) ;
}
}
という話まで書くべき?
必要なのは一通り書いたはず。 https://ufcpp.net/study/csharp/async/asyncstream/#await-foreach
https://ufcpp.net/study/csharp/st_loop.html からのリンクはなくていいや。
WithCancellation の話は非同期イテレーターの方で書く。
非同期ストリームの話は分けて issue 立てる。
await using の次に。 というか、foreach は using 的な挙動を含んでて、await foreach も await using 的な挙動を含んでる。
ValueTask<bool>
必須じゃない