int上的无效转换异常为double

时间:2012-09-28 20:36:42

标签: c# linq casting linqpad

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

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

为什么LinqPad会抛出一个

  

InvalidCastException:指定的强制转换无效。

1 个答案:

答案 0 :(得分:36)

C#允许从int直接转换为double,但不能从int转换为objectdouble

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)来获取价值转换行为。