我有这段代码:
var numbers = new []{ 1,2,3 };
IEnumerable<int> evenNumbers = numbers.Where(i=> i % 2 == 0);
现在我把这个“集合”变成一个List:
evenNumbers = evenNumbers.ToList();
为什么我现在只能evenNumbers.Count()
而不是evenNumbers.Count
?
使用:
IList<int> evenNumbers = numbers.Where(i=> i % 2 == 0).ToList();
我可以。不会'evenNumbers = evenNumbers.ToList();
将IEnumerable实现为List吗?
答案 0 :(得分:1)
对于您的编译器,evenNumbers仍然是IEnumerable类型。你的编译器不知道它实际上是一个List。如果为其分配派生类型的对象,则变量的类型“evenNumbers”不会更改。
答案 1 :(得分:1)
evenNumbers
变量仍为IEnumerable<int>
。您应该创建一个新的变量类型IList<int>
或List<int>
来使用Count
属性,因为它是在IList<T>
接口中定义的。这就是你在第二次任务中所做的。