c# - 将 int 上的无效转换异常加倍

标签 c# linq casting linqpad

也许我疯了,但我认为这是一个有效的类型转换:

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

为什么 LinqPad 抛出一个

InvalidCastException: Specified cast is not valid.

?

最佳答案

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

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/

相关文章:

c# - 获取公共(public)/外部 IP 地址?

c# - 有没有办法使用 .net 驱动程序忽略 cassandra 数据库中实体的列

c# - 为什么这个 Actor 是多余的?

c# - 使用 C# 编辑音乐元数据

c# - 如何将超链接添加到动态 gridview 列

c# - Linq:匹配子对象列表中子对象的属性并从父对象列表中返回父对象

c# - 将匿名类型正确声明为数组以保持作用域

Java - instanceof 在应该为真时返回 false

c++ - 为什么我可以在 C 中将 int 文字隐式转换为 int * 而在 C++ 中却不能?

c# - 位置 2 处没有行 C# 运行时异常