使用Cast <T>将int []转换为double []?

Maj*_*cRa 5 .net c# linq ienumerable

可能重复:
IEnumerable.Cast <>

可以隐式地将int转换为double.为什么"指定演员表无效".异常在这里提出?

 double[] a = Enumerable.Range(0, 7).Cast<double>().ToArray();
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几个"版本".

PS我知道可能的解决方案,如:

 double[] a = Enumerable.Range(0, 7).Select(x => (double)x).ToArray();
Run Code Online (Sandbox Code Playgroud)

但我很好奇Cast如何工作=>为什么它在这个看起来如此明显的例子中不起作用.

eou*_*3hf 4

CastIEnumerable将(非类型化)转换为IEnumerable<T>(通用类型化)。它实际上不会对任何成员进行不同的演员阵容。

根据这个答案

好吧,您对 Cast 的期望不正确,仅此而已 - 它的目的是处理装箱/拆箱、引用和身份转换,仅此而已。不幸的是,文档并不像想象的那么清晰

所以,你被困住了.Select()

  • 我将这个问题作为重复项关闭而不是提供您链接到的问题中接受的答案不是更合适吗? (3认同)