意外的“指定的强制转换无效.”异常(Linq)
本文关键字:异常 Linq 无效 意外 转换 | 更新日期: 2023-09-27 17:59:07
有人知道为什么我不能使用Linq扩展方法Cast<>()
将Int
强制转换为UInt
吗?
var myIntList = new List<int>();
myIntList.Add(1);
myIntList.Add(2);
myIntList.Add(3);
var myUIntList = myIntList.Cast<uint>().ToList();
它抛出指定的强制转换无效。当我使用Select()
时,它会工作(当然)。
var myIntList = new List<int>();
myIntList.Add(1);
myIntList.Add(2);
myIntList.Add(3);
var myUIntList = myIntList.Select(i => (uint)i).ToList();
(这是一个错误还是未实现的功能?)
Enumerable.Cast
作为IEnumerable
(非通用接口)上的扩展方法实现。
这意味着序列中的值是从object
强制转换的,这意味着值类型涉及装箱和取消装箱。您只能取消对确切类型的复选框。例如:
int i = 1;
object boxed = i;
int unboxToInt = (int)boxed; // ok
uint unboxToUint = (uint)boxed; // invalid cast exception
您可以在文档中阅读更多关于装箱的信息。