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

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

具有異步覆蓋的同步基方法

具有異步覆蓋的同步基方法

C#
手掌心 2022-07-23 16:17:39
我有一個(gè)基類,它的子類可能想要異步實(shí)現(xiàn)一個(gè)方法。我已經(jīng)實(shí)現(xiàn)如下,但是 Visual Studio 建議GetEntityName在基本同步中進(jìn)行,因?yàn)樗鼪](méi)有await任何作用。然而,這會(huì)讓孩子們崩潰。有沒(méi)有更好的辦法?  public abstract class BaseHandler  {        protected virtual async Task<string> GetEntityName(object entity)        {            return string.Empty;        }  } public class ChilldHandler: BaseHandler {        protected override async Task<string> GetEntityName(object entity)        {            return await LongRunningService.DoSomething(entity);        } }
查看完整描述

2 回答

?
繁華開(kāi)滿天機(jī)

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

public abstract class BaseHandler

{

    protected virtual Task<string> GetEntityName(object entity)

    {

        return Task.FromResult(string.Empty);

    }

}

因?yàn)槟愕姆椒](méi)有做任何可以等待的事情,你可以通過(guò)使用Task.FromResult方法返回已經(jīng)完成的任務(wù)。


你不需要 await 里面的任何東西GetEntityName,因?yàn)闆](méi)有任何不完整的 Task 需要等待。


查看完整回答
反對(duì) 回復(fù) 2022-07-23
?
至尊寶的傳說(shuō)

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

async是它出現(xiàn)的特定方法的實(shí)現(xiàn)細(xì)節(jié)。盡管它出現(xiàn)在哪里,它并不構(gòu)成方法簽名的一部分。async(這也是接口1中不允許您使用的原因——因?yàn)樗鼈儧](méi)有實(shí)現(xiàn),而且它不是方法簽名的一部分)。

也就是說(shuō),任何虛擬Task返回方法都可能override在子類中具有/不使用的實(shí)現(xiàn),async并且原始基方法的標(biāo)記方式也無(wú)關(guān)緊要。

正如 FCin 所示,完全有可能有一個(gè)同步方法仍然返回Task您想要的作為該方法的返回類型。


1忽略接口的新奇默認(rèn)實(shí)現(xiàn)。


查看完整回答
反對(duì) 回復(fù) 2022-07-23
  • 2 回答
  • 0 關(guān)注
  • 108 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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