2017-10-20 126 views
1

如果我想將List作爲方法的參數,Resharper會提示使用IList接口可能是一個更好的主意。如果我然後用IList替換List,Resharper建議IEnumerable。在Java中,我也將List接口和ArrayList作爲參數。但是,使用iEnumerable作爲參數是否真的很好看?如果不需要IList或List的功能,是否使用IEnumerable是一種好習慣?C#列出IList或IEnumerable作爲參數

+1

*「如果不需要IList或List的功能,是否使用IEnumerable是一種好的做法?」 - 是的。 –

+0

是的,因爲它打開了你可以像數組或延遲加載的Linq查詢那樣傳遞的內容。 – juharr

+0

提供可重用的方法總是很好的。如果您要求所有泛型集合的基本接口,那麼您可以使用此方法的許多類型,而不僅僅使用列表。 'IList '包含列表和數組,但是如果你不需要'IList '的方法,你可以使用'IEnumerable '。 –

回答

5

這裏是the article這讓我改變了主意,這一切,讓我開始下面的

原則採取的最通用的類​​型,

所以返回最特殊類型的答案你的問題

如果沒有IList或List的功能是必需的,這是使用IEnumerable的好習慣嗎?

是的,這是

注:不超過做到這一點!我看到接受IEnumerable的代碼,然後拋出一個異常,如果參數不是List。這很愚蠢。我上面引用的句子的意思是「不要求比你需要更多的特異性」