[英]Correct return type for Task of anonymous object from async method in C#
返回匿名對象的 C# 中異步方法的最佳/正確返回類型是什么? 我的方法通過實體框架選擇一些數據。 我最好的猜測是這樣的:
public async Task<object> GetStuff() {
abClass ret = await DoSomethingAsync();
return new { Param1 = ret.a, Param2 = ret.b };
}
但是 Task 實際上是做到這一點的最佳方法,還是有一些 Task 或類似的東西?
首先,您不應該從公共方法返回匿名對象。
要么按照@Krzysztof Skowronek 的建議返回一個元組,要么更好地定義一個類型並返回這個類型的一個實例:
public async Task<YourClass> GetStuff()
{
abClass ret = await DoSomethingAsync();
return new YourClass { Param1 = ret.a, Param2 = ret.b };
}
您班級的任何消費者都應該感謝您這樣做。
從 C# 7 開始,您可以像在 Python 中一樣返回元組 - 使用它而不是任意對象:
public async Task<(int Param1, double Param2)> GetStuff() {
abClass ret = await DoSomethingAsync();
return (ret.A, ret.B);
}
// then you can do:
(int param1, double param2) = await GetStuff(); //or
var stuff = await GetStuff();
var a = stuff.Param1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.