2010-12-13 4 views
2

Possible en double:
Puzzling Enumerable.Cast InvalidCastExceptioncasting IEnumerable <int> à IEnumerable <long> ne

Pourquoi

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

échouent avec un InvalidCastException?

+0

en double de [Puzzling Enumerable.Cast InvalidCastException] (http://stackoverflow.com/questions/445471/puzzling-enumerable-cast- invalidcastexception) – jason

+0

Ceci est une copie d'une [question] (http://stackoverflow.com/questions/445471/puzzling-enumerable-cast-invalidcastexception) que j'ai déjà posée. – jason

Répondre

6

Voir cette réponse: Puzzling Enumerable.Cast InvalidCastException

En résumé, CAST() fonctionne sur le IEnumerable non générique, qui boîtes chaque int comme un objet. Ainsi, lorsque le Cast est appelé, il ne peut traiter les éléments comme étant de type Object, qui ne peut pas être long.

La solution est d'utiliser le produit pour effectuer une distribution explicite:

var numbers = Enumerable.Range(1,9999).Select(i=>(long)i).ToList(); 
Questions connexes