亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何編寫帶有out參數的異步方法?

如何編寫帶有out參數的異步方法?

C#
慕容708150 2019-12-26 11:07:26
我想編寫一個帶有out參數的異步方法,如下所示:public async void Method1(){    int op;    int result = await GetDataTaskAsync(out op);}我該怎么做GetDataTaskAsync?
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

方法中不能包含ref或out參數async(如前所述)。


這為周圍的數據建模帶來了尖叫:


public class Data

{

    public int Op {get; set;}

    public int Result {get; set;}

}


public async void Method1()

{

    Data data = await GetDataTaskAsync();

    // use data.Op and data.Result from here on

}


public async Task<Data> GetDataTaskAsync()

{

    var returnValue = new Data();

    // Fill up returnValue

    return returnValue;

}

您可以更輕松地重用代碼,并且比變量或元組更具可讀性。


查看完整回答
反對 回復 2019-12-26
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

Alex強調可讀性。同樣,一個函數的接口也足以定義要返回的類型,并且您還將獲得有意義的變量名。


delegate void OpDelegate(int op);

Task<bool> GetDataTaskAsync(OpDelegate callback)

{

    bool canGetData = true;

    if (canGetData) callback(5);

    return Task.FromResult(canGetData);

}

調用者提供一個lambda(或命名函數),并且intellisense通過從委托中復制變量名稱來提供幫助。


int myOp;

bool result = await GetDataTaskAsync(op => myOp = op);

此特定方法類似于“嘗試”方法,myOp如果方法結果為,則在其中設置true。否則,您將不在乎myOp。


查看完整回答
反對 回復 2019-12-26
  • 3 回答
  • 0 關注
  • 591 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號