c# - 为什么 Enumerable.Cast 引发 InvalidCastException?

标签 c# casting ienumerable

如果我可以隐式地将整数值转换为 double 值,例如:

int a = 4;    
double b = a;
// now b holds 4.0

为什么我不能这样做:

int[] intNumbers = {10, 6, 1, 9};    
double[] doubleNumbers2 = intNumbers.Cast<double>().ToArray();

我收到“指定的转换无效”InvalidCastException 异常。

相反的操作(从 double 转换为 int)会导致相同的错误。

我做错了什么?

最佳答案

好吧,您对 Cast 的期望不正确,仅此而已 - 它旨在处理装箱/拆箱、引用和身份转换,仅此而已。不幸的是,文档并不像它可能的那样清晰:(

解决方案是使用Select:

doubleNumbers2 = intNumbers.Select(x => (double) x).ToArray();

关于c# - 为什么 Enumerable.Cast 引发 InvalidCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2760804/

相关文章:

c# - 为什么不能在泛型静态类中声明扩展方法?

C++ 类型转换替代虚拟方法

c# - 比较两个序列是否相等

.net-4.0 - 为什么我不能在 .NET 4.0 中将 List<int> 分配给 IEnumerable<object>

c# - 正确的线程方法

c# - 在未安装 MS Office 的计算机上使用 Office.Interop.Excel

c++ - 转换为使用 typedef 创建的结构类型

java - java 中的 toString 与 toString(参数) 与 valueOf(参数)

asp.net-mvc - MVC错误: model item of type 'System.Collections.Generic.IEnumerable` 1 required

c# - 如何通过 ASP.NET Web API 使用 Active Directory 身份验证?