关于 c#:int to double 上的无效强制转换异常

invalid cast exception on int to double

也许我疯了,但我认为这是一个有效的演员阵容:

1
(new int[]{1,2,3,4,5}).Cast<double>()

为什么 LinqPad 会抛出一个

InvalidCastException: Specified cast is not valid.

?


C# 允许从 int 直接转换到 double,但不能从 intobjectdouble

1
2
3
4
int i = 1;
object o = i;
double d1 = (double)i; // okay
double d2 = (double)o; // error

Enumerable.Cast 扩展方法的行为类似于后者。它不会将值转换为不同的类型,它会断言值已经是预期的类型,如果不是则抛出异常。

您可以尝试 (new int[]{1,2,3,4,5}).Select(i => (double)i) 来获得值转换行为。