如果我可以将整数值隐式转换为双精度型,例如:
int a = 4; double b = a; // now b holds 4.0
为什么我不能这样做:
int[] intNumbers = {10, 6, 1, 9}; double[] doubleNumbers2 = intNumbers.Cast<double>().ToArray();
我收到“指定的演员表无效”的InvalidCastException异常。
InvalidCastException
相反(从double转换为int)会导致相同的错误。
我究竟做错了什么?
好吧,您对的期望不正确Cast,仅此而已-这意味着要处理装箱/拆箱,参考和身份转换,仅此而已。不幸的是,文档不够清晰:(
Cast
解决方法是使用Select:
Select
doubleNumbers2 = intNumbers.Select(x => (double) x).ToArray();