有谁知道为什么我不能使用Linq扩展方法Int
向UInt
投射Cast<>()
?
var myIntList = new List<int>();
myIntList.Add(1);
myIntList.Add(2);
myIntList.Add(3);
var myUIntList = myIntList.Cast<uint>().ToList();
抛出指定演员无效。当我使用Select()
时,它将(ofcourse)。
var myIntList = new List<int>();
myIntList.Add(1);
myIntList.Add(2);
myIntList.Add(3);
var myUIntList = myIntList.Select(i => (uint)i).ToList();
(这是一个错误还是未实现的功能?)
答案 0 :(得分:4)
Enumerable.Cast
在IEnumerable
(非通用接口)上作为扩展方法实现。
这意味着序列中的值是从object
转换而来的,这意味着值类型涉及装箱和拆箱。您只能拆箱到确切的类型。例如:
int i = 1;
object boxed = i;
int unboxToInt = (int)boxed; // ok
uint unboxToUint = (uint)boxed; // invalid cast exception
您可以阅读有关拳击in the documentation的更多信息。