为什么这样:
(new[]{1,2,3}).Cast<decimal>();
结果是
InvalidCastException: Specified cast is not valid.
解决方法
是的,Cast不这样做.基本上它只是引用转化和拆箱转换 – 而不是不同值类型之间的转换.
请改用:
(new[]{1,3}).Select(x => (decimal)x)
请注意,在.NET 3.5 SP1之前,Cast比现在做了更多的转换.我不知道它是否会起作用,但现在肯定不行.