为什么
List<long> numbers = Enumerable.Range(1, 9999).Cast<long>().ToList();
因InvalidCastException而失败?
答案 0 :(得分:8)
请参阅此答案:Puzzling Enumerable.Cast InvalidCastException
总之,Cast()适用于非泛型IEnumerable,它将每个int作为Object包装。因此,当调用Cast时,它只能将元素视为Object类型,不能将其转换为long。
解决方案是使用Select来执行显式转换:
var numbers = Enumerable.Range(1,9999).Select(i=>(long)i).ToList();