You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更优地将Enumerable.Range的执行结果转换为Double类型?

核心报错原因

你尝试调用ToArray(Of Double)报错的核心原因是:Enumerable.Range生成的是整数类型的序列IEnumerable(Of Integer),ToArray()方法的泛型参数必须和源序列的元素类型匹配,直接指定Of Double会触发类型不匹配的编译错误。你需要先把序列里的每个整数转换为Double类型,再调用ToArray生成Double数组。

另外你觉得现有Select+CDbl+ToArray的方案效率偏低其实是误解,这套组合只会遍历一次序列,转换和生成数组的开销极小,绝大多数场景下完全够用。

推荐实现方式

1. 简化LINQ写法(最常用)

可以直接把CDbl作为委托传入Select方法,省略冗余的lambda声明,语法更简洁,执行效率和你原来的写法完全一致:

Dim N() As Double = Enumerable.Range(1, 10).Select(AddressOf CDbl).ToArray()

2. 极致性能方案(无LINQ开销)

如果是高频调用的性能敏感场景,可以完全跳过LINQ的迭代器开销,直接手动初始化数组:

Dim N(9) As Double ' 数组长度为10,下标范围0~9
For i = 0 To 9
    N(i) = i + 1
Next

这种方式的执行效率是所有方案中最高的。

内容的提问来源于stack exchange,提问作者Toddleson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:48:03