假設我有一個方法,它具有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