如何编写带有out参数的异步方法?

我想编写一个带有out参数的异步方法,如下所示:


public async void Method1()

{

    int op;

    int result = await GetDataTaskAsync(out op);

}

我该怎么做GetDataTaskAsync?


慕容708150
浏览 540回答 3
3回答

泛舟湖上清波郎朗

方法中不能包含ref或out参数async(如前所述)。这为周围的数据建模带来了尖叫:public class Data{&nbsp; &nbsp; public int Op {get; set;}&nbsp; &nbsp; public int Result {get; set;}}public async void Method1(){&nbsp; &nbsp; Data data = await GetDataTaskAsync();&nbsp; &nbsp; // use data.Op and data.Result from here on}public async Task<Data> GetDataTaskAsync(){&nbsp; &nbsp; var returnValue = new Data();&nbsp; &nbsp; // Fill up returnValue&nbsp; &nbsp; return returnValue;}您可以更轻松地重用代码,并且比变量或元组更具可读性。

Smart猫小萌

Alex强调可读性。同样,一个函数的接口也足以定义要返回的类型,并且您还将获得有意义的变量名。delegate void OpDelegate(int op);Task<bool> GetDataTaskAsync(OpDelegate callback){&nbsp; &nbsp; bool canGetData = true;&nbsp; &nbsp; if (canGetData) callback(5);&nbsp; &nbsp; return Task.FromResult(canGetData);}调用者提供一个lambda(或命名函数),并且intellisense通过从委托中复制变量名称来提供帮助。int myOp;bool result = await GetDataTaskAsync(op => myOp = op);此特定方法类似于“尝试”方法,myOp如果方法结果为,则在其中设置true。否则,您将不在乎myOp。
打开App,查看更多内容
随时随地看视频慕课网APP