2010-12-13 88 views
2

可能重复:
Puzzling Enumerable.Cast InvalidCastException铸造了IEnumerable <int>到IEnumerable的<long>失败

为什么

List<long> numbers = Enumerable.Range(1, 9999).Cast<long>().ToList(); 

失败,一个InvalidCastException?

+0

[迷宫Enumerable.Cast InvalidCastException的](的重复http://stackoverflow.com/questions/445471/puzzling-enumerable-cast- invalidcastexception) – jason 2010-12-13 21:30:57

+0

这是我以前问过的[question](http://stackoverflow.com/questions/445471/puzzling-enumerable-cast-invalidcastexception)的副本。 – jason 2010-12-13 21:31:17

回答

6

看到这个答案:Puzzling Enumerable.Cast InvalidCastException

综上所述,CAST()作用于非通用IEnumerable的,这箱,每箱诠释为对象。所以,当Cast被调用时,它只能将元素视为类型为Object的元素,而不能将元素强制转换为long。

的解决方案是使用选择要执行的明确的转换:

var numbers = Enumerable.Range(1,9999).Select(i=>(long)i).ToList(); 
相关问题