簡體   English   中英

在異步方法中列出到 IEnumerable

[英]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.

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