MSDN说,从ulong
到double
的转换可以隐式完成:https://msdn.microsoft.com/en-us/library/y5b434w4.aspx。但是,当我尝试编译如下:无法从ulong []转换为double []
public static double arraySum(double[] arrN)
{
double sum = 0;
foreach (double k in arrN)
sum += k;
return sum;
}
ulong[] chessArray = new ulong[64]
//filling values of chessArray, 1st element is 1, 2nd is 2, 3rd is 4 etc.
ulong a = arraySum(chessArray);
我得到一个编译器错误CS1503“无法从ULONG []转换为加倍[]”。什么原因?我的猜测是,在这种特殊情况下,最后一个数组元素的值非常高,即chessArray [63]甚至更高(1),然后最大值为ulong
:18,446,744,073,709,551,615。
MSDN说你可以隐式转换'ulong'到'double'。不是'ulong []'''double []''。 –
仅仅因为存在从某种类型“T”到“U”的隐式转换,并不意味着存在从“T”数组到“U”数组的隐式转换,即隐式转换不会自动提升到数组类型。 – Lee
但是你正在做一个双倍的时间。这可以工作:ulong a =(ulong)chessArray.Select(x =>(double)x).Sum(); – jdweng