为什么错误无法从ICollection <t>转换为List <t> </t> </t>

时间:2014-02-07 10:24:04

标签: c# .net oop

    List<Question> withTags = 
Question.GetRecentQuestionsWithTags(StackExchangeSite.StackOverflow, "c#");

上面的代码有编译错误;

  

无法隐式转换类型&System; Collection.Collections.Generic.ICollection&#39;到&#39; System.Collections.Generic.List&#39;。

虽然它适用于.ToList(),但为什么错误在第一位?

List<t> implements from ICollection<T> and so does ICollection<Question>

4 个答案:

答案 0 :(得分:2)

因为ICollection不一定是List,但也可以是任何其他集合,例如Dictionary

答案 1 :(得分:2)

仅因为每个List都是ICollection,并不意味着每个ICollection都是List

仅仅因为每个医生都是人,这并不意味着每个人都是医生。

基本逻辑。

答案 2 :(得分:1)

这是因为ICollection无法隐式投放到List。反过来它会反过来。

答案 3 :(得分:0)

添加ToList()

List<Question> withTags = 
Question.GetRecentQuestionsWithTags(StackExchangeSite.StackOverflow, "c#").ToList();

你总是可以将一个列表转换为一个集合(List类是一个ancesotor),但它并没有反过来。