[英]List to IEnumerable in a Async method
我有一個方法:
public Task<IEnumerable<MyDetails>> HandleAsync(...)
在這種方法中,我只是構建了一個項目列表。
IEnumerable<MyDetails> myDetails = new List<MyDetails> {
new MyDetails{ Name = 'John' },
new MyDetails{ Name = 'James' },
new MyDetails{ Name = 'Anne' },
};
然后返回結果。
return Task.FromResult(insuraceTypeDetails);
在代碼審查中,我被要求使用var
而不是IEnumerable<MyDetails>
但是,嘗試這樣做時,我在返回時遇到錯誤:
無法將類型 Threading.Tasks.Task<List> 轉換為 Threading.Tasks.Task<IEnumerable>
我認為這沒問題,但編譯器不允許。 我可以在這里使用 var 嗎? 或者我是否正確明確地告訴編譯器我們需要什么?
在代碼審查中,我被要求使用
var
而不是IEnumerable<MyDetails>
var
將從初始化中推斷變量的類型,在此轉換為List<MyDetails>
。 但正如您所發現的,您需要將變量設為IEnumerable<MyDetails>
以匹配返回類型。
您可以做一些愚蠢的事情,例如將其轉換為IEnumerable
:
return Task.FromResult(insuraceTypeDetails.AsEnumerable());
或者做一個明確的演員:
return Task.FromResult((IEnumbrable<MyDetails>)insuraceTypeDetails);
但那些只是圍繞教條式的編碼風格工作。 顯式聲明變量類型絕對沒有錯,尤其是當使用推斷類型不起作用時。
使用IEnumerable<MyDetails>
並向您的同事解釋為什么var
在這里不是正確的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.