int to double 上的无效强制转换异常
•浏览 1
invalid cast exception on int to double
也许我疯了,但我认为这是一个有效的演员阵容:
(new int[]{1,2,3,4,5}).Cast<double>()
int i = 1;
object o = i;
double d1 = (double)i; // okay
double d2 = (double)o; // error
为什么 LinqPad 会抛出一个
InvalidCastException: Specified cast is not valid.
?
C# 允许从 int 直接转换到 double,但不能从 int 到 object 到 double。
(new int[]{1,2,3,4,5}).Cast<double>()
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) 来获得值转换行为。