如果我可以隐式地将整数值转换为 double 值,例如:
int a = 4;
double b = a;
// now b holds 4.0
为什么我不能这样做:
int[] intNumbers = {10, 6, 1, 9};
double[] doubleNumbers2 = intNumbers.Cast<double>().ToArray();
我收到“指定的转换无效”InvalidCastException
异常。
相反的操作(从 double 转换为 int)会导致相同的错误。
我做错了什么?
最佳答案
好吧,您对 Cast
的期望不正确,仅此而已 - 它旨在处理装箱/拆箱、引用和身份转换,仅此而已。不幸的是,文档并不像它可能的那样清晰:(
解决方案是使用Select
:
doubleNumbers2 = intNumbers.Select(x => (double) x).ToArray();
关于c# - 为什么 Enumerable.Cast 引发 InvalidCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2760804/