也许我疯了,但我认为这是一个有效的类型转换:
(new int[]{1,2,3,4,5}).Cast<double>()
为什么 LinqPad 抛出一个
InvalidCastException: Specified cast is not valid.
?
最佳答案
C# 允许从 int
直接转换为 double
,但不允许从 int
到 object
到 双
。
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)
来获取值转换行为。
关于c# - 将 int 上的无效转换异常加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12647068/