1 回答

TA貢獻1806條經驗 獲得超8個贊
我了解您正在創建一個希望被重寫的類,并且您希望為 SetupAsync() 提供默認實現,以允許重寫版本async.
async 關鍵字不是方法簽名的一部分,必須復制方法簽名才能覆蓋方法。只有返回類型、參數和訪問修飾符。
如果您的方法中沒有異步代碼,則不要使用async。如果您想允許覆蓋版本為 async,那么您所需要做的就是讓它返回 Task。
在默認實現(同步運行)中,您只需使用 在 Task 中返回一個值。Task.FromResult
例如:
class Test {
protected virtual Task<bool> SetupAsync() {
return Task.FromResult(true);
}
}
class Test2 : Test {
protected override async Task<bool> SetupAsync() {
await Task.Delay(1000);
return false;
}
}
重寫方法與該方法的內部工作原理無關,而是與該方法如何暴露給其他代碼有關。任何代碼都必須能夠以與默認實現相同的方式調用重寫的方法,并且 async 關鍵字本身與此沒有任何關系。
async 關鍵字僅允許在方法內使用 。確實,使用 關鍵字需要方法返回 ,但事實上它是 返回 會改變其他代碼與其交互的方式。await asyncTaskTask
- 1 回答
- 0 關注
- 169 瀏覽
添加回答
舉報