为什么
List<long> numbers = Enumerable.Range(1, 9999).Cast<long>().ToList();
因 InvalidCastException 失败?
看到这个答案:令人困惑的Enumerable.Cast InvalidCastException
总之,Cast() 适用于非泛型 IEnumerable,它将每个 int 包装为一个对象。因此,当调用 Cast 时,它只能将元素视为 Object 类型,而不能转换为 long。
解决方案是使用 Select 对每个强类型元素执行显式转换:
var numbers = Enumerable.Range(1,9999).Select(i=>(long)i).ToList();