1.await表达式是由关键字await和一个空闲对象(称为任务)组成, 这个任务可能是一个Task类型对象,也可能不是 : await task(空闲对象或任务)
2.空闲对象是一个awaitable类型的实例,awaitable类型是指包含GetAwaiter方法的类型,该方法没有参数,返回类型为awaiter.这句话可以理解为await表达式是由await关键字 + awaitable类型的类组成,而awaitable类型的类只需要包含GetAwaiter方法且GetAwaiter方法满足要求既可(如GetAwaiter方法返回类型为awaiter,包含bool IsCompleted{get;}属性等)
3.Task类就是awaitable类型
4.可以自己构建一个空闲对象,不使用Task,也可以使用Task.Run方法创建一个对象