【发布时间】:2014-12-03 18:11:33
【问题描述】:
假设我有一个具有void 返回类型的方法,并且我需要await 在此方法中的操作上。
public void someOperation()
{
//dostuff
var res = await someOtherOperation();
//do some other stuff that needs res.
}
当我尝试编译此代码时,我收到错误消息说someOperation 必须声明async。我不明白为什么。我理解如果该方法有返回值为什么会这样,但当它是void 时就不在这里了。甚至在等待操作对方法的返回值没有影响的情况下。
这已作为this 问题的一部分提出,但我没有找到我正在寻找的答案。 This guy 仅提及:
async 关键字启用 await 关键字。所以任何使用等待的方法 必须标记为异步。
- 首先,我不确定
async关键字启用await关键字是什么意思。 - 其次,重申我的问题,我不确定为什么它是必需?
【问题讨论】:
-
1) 不能在未声明
async的方法中使用await运算符。因此,它启用操作员。 2)我不确定我是否理解您的问题,“为什么需要它?”这是必需的,因为这就是语言的工作方式。究竟是什么问题? -
我的意思是,它应该只是为了符合现有设计吗?设计师不想在这种情况下破例?因为从我的角度来看,它不是必需的。该方法可以正常工作,而调用者不需要知道它是
async。
标签: c# async-await