06 2022 档案
摘要:IEnumerable 和 IEnumerator IEnumerator接口定义了以向前方式遍历集合的基本底层协议。 声明如下: public interface IEnumerator { bool MoveNext(); object Current { get; } void Reset()
阅读全文
摘要:C#的CLR(即 common language runtime,公共语言运行库)包含两种任务组合器:Task.WhenAny和Task.WhenAll。 我们先定义如下方法: async Task<int> Delay1() { await Task.Delay(1000); return 1;
阅读全文
摘要:在C#8之前,可以使用yield return实现迭代器,也可以用await书写异步函数。但无法两者结合,实现一个可以等待的迭代器。C#8引入了异步流解决了这个问题。 异步流基于以下两个接口。 public interface IAsyncEnumerable<out T> { IAsyncEnum
阅读全文
摘要:要编写异步函数,可将返回类型void改为Task。这样方法本身就能进行异步调用,并且是可等待的。 async Task PrintAnswerToLife() { await Task.Delay (5000); int answer = 21 * 2; Console.WriteLine (ans
阅读全文
摘要:await关键字可以简便地附加延续。 static void Main(string[] args) { DisplayPrimesCount(); } static async void DisplayPrimesCount() { int result = await GetPrimesCoun
阅读全文