这个问题在这里已经有了答案:




10年前关闭。






为什么

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

因 InvalidCastException 而失败?

最佳答案

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

总之,Cast() 适用于非泛型 IEnumerable,它将每个 int 装箱为一个对象。因此,在调用 Cast 时,它只能将元素视为 Object 类型,而不能将其强制转换为 long。

解决方案是使用 Select 执行显式转换:

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

关于c# - 将 IEnumerable<int> 转换为 IEnumerable<long> 失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4433648/

10-13 04:59