簡體   English   中英

C#中異步方法匿名對象任務的正確返回類型

[英]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;
  1. 你的問題與任務無關。
  2. 您不應該從公共方法返回匿名對象,只有當它是 API 響應時才可以這樣做。
  3. 您可以像@mm8 所說的那樣創建一個類或使用元組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM