在即时窗口中将int数组转换为double数组?

12

在立即窗口中将int数组转换为double数组是否可能? 我尝试过强制转换,但是不知何故它无法工作。 我想知道是否可能?

2个回答

25

那个强制转型是非法的。如果尝试编译它,你会发现它也无法工作。

以下代码将执行此转换:

var d = i.Select(x => (double)x).ToArray();

很遗憾,您不能在即时窗口中使用它,因为即时窗口不支持Lambda表达式。

一个不需要Lambda表达式的解决方案如下:

i.Select(Convert.ToDouble).ToArray();

这可能可行,因为没有lambda表达式。感谢Chris的想法。


5
дҪҝз”ЁConvert.ToDoubleд»ЈжӣҝLambdaиЎЁиҫҫејҸеҸҜд»Ҙи§ЈеҶій—®йўҳеҗ—пјҹ - Chris
1
@Chris:你的意思是 i.Select(Convert.ToDouble).ToArray() 吗?是的,那很有可能行得通。 - Daniel Hilgarth
1
这正是我所想的,没错。我没有打开任何东西进行测试,也不确定在传递这样的方法时它在超载解析方面有多少优势。 - Chris
那就是我错过的50个声望分。;-) 不过很高兴它起作用了。值得一提的是,思考过程是“不允许使用Lambda表达式。如果你已经有一个方法可以做到这一点,但是你必须编写一个方法,这样就失去了意义。等等,如果已经有了一种在类型之间进行转换的方法呢?” - Chris
当然,这个解决方案创建了一个二进制外观的数组,与原始数组非常不同。如果您想要相同的位(但完全不同的数值/数学含义),则需要使用long[]类型的数组,然后使用longArr.Select(BitConverter.Int64BitsToDouble).ToArray() - Jeppe Stig Nielsen

11

另一种方法是使用Array.ConvertAll

Array.ConvertAll<int, double>(nums, x => x);

喜欢这个建议!应该比上面给出的LINQ解决方案更快。 - JamesHoux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接