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