C# 将十进制数组转换为双数组

C# 将十进制数组转换为双数组,c#,arrays,double,decimal,C#,Arrays,Double,Decimal,将十进制[]转换为双[]是一种高效且希望优雅的咒语吗? 我正在使用一些相当大的数组。您还可以使用与此类似的类和扩展类 double[] doubleArray = Array.ConvertAll(decimalArray, x => (double)x); public static class ArrayExtension { public static double[] ToDouble(this float[] arr) =>

十进制[]
转换为
双[]
是一种高效且希望优雅的咒语吗?
我正在使用一些相当大的数组。

您还可以使用与此类似的类和扩展类

double[] doubleArray = Array.ConvertAll(decimalArray, x => (double)x);
public static class ArrayExtension
{

   public static double[] ToDouble(this float[] arr) => 
                                    Array.ConvertAll(arr, x => (double)x);

}
然后:


这会比
十进制数组快吗?选择(d=>(double)d.ToArray()
?@Tobias我也很感兴趣,所以我创建了一些小测试,你的问题的答案是肯定的,但要快多少,这取决于这两种类型,也取决于您是否处于调试或发布阶段-对于20000000
decimal
s
ConvertAll
,您的方法在调试时平均持续628ms,在发布时平均持续245ms,在我的计算机上,您的方法在调试时平均持续1015ms,在发布时平均持续573ms
ConvertAll
也消耗更少的内存-它处理了大约8000000个
float
s到
double
s,并且您的方法在
系统之前仅处理了大约30000000个。OutOfMemoryException
是使用相同的设置引发的。在.NET4.5上测试
double[] doubleArr = decimalArr.ToDouble();