我得到的代碼非常類似於此(我簡化了一些代碼來展示我試圖找出行爲的本質)。爲什麼我需要使此方法異步?
public async System.Threading.Tasks.Task<bool> IsNumberOdd(int numToTest)
{
if (numToTest % 2 == 0)
{
return false;
}
else
{
return true;
}
}
如果我離開關async
關鍵字,我得到一個有關無法投下bool
到Task<bool>
投訴。我假設這裏涉及到一些語法糖。看着IL(我對IL不是很熟悉),好像async關鍵字導致任務運行,然後返回值是任務的結果。我是否正確理解這一點?順便說一下,如果這是一個騙局,或者如果有一些博客文章討論這個,請隨時指向我並關閉它。我並不是想填補我的代表。我試圖瞭解這段代碼發生了什麼。
編輯:
對於所有那些誰被問「爲什麼是這個方法異步?」 - 因爲我想建立一個小而簡單的代碼示例演示了問題。我還應該添加一個調用代碼的例子,但我試圖儘可能保持代碼的小而簡單。
我認爲Jon Skeet的回答完全符合你的問題。 – slugster
如果沒有任何異步要做,但由於簽名的原因你需要返回一個'Task',那麼你可能需要'Task.FromResult (T值)',即'return Task.FromResult(true);' –
謝謝@ slugster - 正是我想知道的。我的谷歌搜索技巧失敗了:) –