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;
}
您可以更輕松地重用代碼,并且比變量或元組更具可讀性。

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。
- 3 回答
- 0 關注
- 591 瀏覽
添加回答
舉報