假设我有一个方法,它具有void
返回类型,我需要await
对此方法的操作。为什么一个void方法是异步的以便能够等待?
public void someOperation()
{
//dostuff
var res = await someOtherOperation();
//do some other stuff that needs res.
}
当我试图编译这段代码,我得到了错误说someOperation
必须申报async
。我不明白为什么。我明白为什么如果该方法具有返回值,但在void
时不在此处。甚至在等待操作对方法的返回值没有影响的情况下也是如此。
这已经被作为this问题的一部分提出,但我没有找到我正在寻找的答案。 This guy仅提及:
async关键字启用await关键字。因此,使用await 的任何方法都必须标记为异步。
- 首先,我不知道这意味着什么是
async
关键字,可以await
关键字。 - 其次,重申我的问题,我不确定为什么它是需要?
1)您不能在未声明为'async'的方法中使用'await'运算符。因此它*使*操作员。 2)我不确定我明白你的问题是什么,“为什么这是必需的?”这是必需的,因为这是该语言的工作原理。究竟是什么问题? – 2014-12-03 18:13:40
我的意思是,它应该在那里才符合现有设计?在这种情况下,设计师不想要例外吗?因为从我看它的方式来看它并不是必需的。如果调用者不需要知道它是'async',那么该方法就可以正常工作。 – atoMerz 2014-12-03 18:16:46