我有這樣的代碼:爲什麼我無法在.ToList後訪問Count屬性()
var numbers = new []{ 1,2,3 };
IEnumerable<int> evenNumbers = numbers.Where(i=> i % 2 == 0);
現在我把這個「收集」到列表:
evenNumbers = evenNumbers.ToList();
爲什麼現在我只能做evenNumbers.Count()
而不是evenNumbers.Count
?
有了:
IList<int> evenNumbers = numbers.Where(i=> i % 2 == 0).ToList();
我可以。不會'evenNumbers = evenNumbers.ToList();
實現IEnumerable成List?
因此,它成爲一個列表,但我不能用它作爲一個列表? :O – markzzz 2012-07-20 13:05:02
@markzzz讓我們做一個極端的例子:'object o = evenNumbers.ToList()';你認爲你可以做'o.Count'或'o.Count()'?不,因爲C#編譯器不知道「o」對象中的內容,並且C#是靜態鏈接的(忽略C#4.0'dynamic'對象) – xanatos 2012-07-20 13:21:14
說「在運行時進行某種類型的轉換」 ?大聲笑。你有關於這種行爲的任何教程嗎? – markzzz 2012-07-20 13:40:21