第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

*虛擬*方法缺少“await”;返回值?

*虛擬*方法缺少“await”;返回值?

C#
慕無忌1623718 2023-12-17 10:48:12
我有一個(gè)異步虛擬方法,它返回一個(gè)默認(rèn)布爾值,該布爾值在我的應(yīng)用程序的某些基本功能中使用。即,如果沒有需要進(jìn)行的設(shè)置,則假設(shè)它已成功。我理解非虛擬方法上下文中的警告方法,但我想知道實(shí)現(xiàn)的最佳方法這是一個(gè) 虛擬 方法。我應(yīng)該在虛擬方法中返回什么以確保刪除此警告?或者我應(yīng)該忽略?// WARNING: This async method lacks 'await'// virtual is the differentiating factor hereprotected virtual async Task<bool> SetupAsync(){    return true;}
查看完整描述

1 回答

?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

我了解您正在創(chuàng)建一個(gè)希望被重寫的類,并且您希望為 SetupAsync() 提供默認(rèn)實(shí)現(xiàn),以允許重寫版本async.


async 關(guān)鍵字不是方法簽名的一部分,必須復(fù)制方法簽名才能覆蓋方法。只有返回類型、參數(shù)和訪問修飾符。


如果您的方法中沒有異步代碼,則不要使用async。如果您想允許覆蓋版本為 async,那么您所需要做的就是讓它返回 Task。


在默認(rèn)實(shí)現(xiàn)(同步運(yùn)行)中,您只需使用 在 Task 中返回一個(gè)值。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;

    }

}

重寫方法與該方法的內(nèi)部工作原理無關(guān),而是與該方法如何暴露給其他代碼有關(guān)。任何代碼都必須能夠以與默認(rèn)實(shí)現(xiàn)相同的方式調(diào)用重寫的方法,并且 async 關(guān)鍵字本身與此沒有任何關(guān)系。


async 關(guān)鍵字僅允許在方法內(nèi)使用 。確實(shí),使用 關(guān)鍵字需要方法返回 ,但事實(shí)上它是 返回 會(huì)改變其他代碼與其交互的方式。await asyncTaskTask


查看完整回答
反對(duì) 回復(fù) 2023-12-17
  • 1 回答
  • 0 關(guān)注
  • 192 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)