2010-12-13 130 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(); 
相關問題