意外的`指定演员表无效。例外(Linq)

时间:2016-07-29 08:58:24

标签: c# linq

有谁知道为什么我不能使用Linq扩展方法IntUInt投射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();

(这是一个错误还是未实现的功能?)

1 个答案:

答案 0 :(得分:4)

Enumerable.CastIEnumerable非通用接口)上作为扩展方法实现。

这意味着序列中的值是从object转换而来的,这意味着值类型涉及装箱和拆箱。您只能拆箱到确切的类型。例如:

int i = 1;
object boxed = i;

int unboxToInt = (int)boxed; // ok
uint unboxToUint = (uint)boxed; // invalid cast exception

您可以阅读有关拳击in the documentation的更多信息。