良好的一天類型的操作數,C#運算符「+」不能被應用到「雙[]」和「ULONG」
如C#新手我面臨與C#另一個問題,即在C不是問題都。
我有這種方法調用其他方法,看起來像這樣。
public double ipoval(double[] xa,double[] ya, int n, double x, int ipord)
{
ulong ind, jnd;
double y, dy;
if (ipord>=1)
{
hunt(xa,Convert.ToUInt64(n),x, ind);
jnd = Math.Min(Math.Max(ind - ipord/2, 1), n - ipord);
polint(xa + jnd - 1, ya + jnd - 1, ipord + 1, x, y, dy);
}
return y;
}
現在它表明我這個錯誤的JND:
- 錯誤1個操作 ' - ' 不能應用於類型爲 'ULONG' 操作數和 'INT'
- 錯誤2的最佳重載對於方法匹配 'System.Math.Max(十進制,十進制)'
- 錯誤3參數1:不能從 '對象' 轉換爲 '小數'
查找就像C#在減去兩種不同的數據類型時遇到了問題。我應該將int ipord轉換成ulong嗎?
和方法polint具有有點相似類型的誤差:
- 錯誤4運算符「+」不能被應用於類型的操作數「雙[]」和「ULONG」
- 錯誤5運算符「 +'不能應用於類型'double []'和'ulong'的操作數
任何想法?預先感謝您的幫助。
我有同樣的事情在C和它的工作原理:
NRREAL ipoval(NRREAL xa[], NRREAL ya[], const int n, const NRREAL x, const int ipord)
{
unsigned long ind,jnd;
NRREAL y,dy,*y2;
if (ipord>=1) { /* polynomial interpolation of ipord-th order */
hunt(xa,(unsigned long)n,x,&ind);
jnd=IMIN(IMAX(ind-ipord/2,1),n-ipord);
polint(xa+jnd-1,ya+jnd-1,ipord+1,x,&y,&dy);
}
return y;
}
順便說一句副作用小的問題,在polint方法在C#中使用的參數是這樣的:
public void polint(double[] xa, double[] ya, int n, double x, ref double y, ref double dy)
,因爲我想Y,DY作爲void方法的輸出。
對不起,對於長篇文章,再次感謝。
您是通過將數到它的基指針像它試圖索引的陣列有可能在C.你不能在C#中做到這一點# –
C#不是C - 僅僅因爲他們有一個類似的名字並不意味着他們的任何行爲都保證是相同的。你需要理解C#,並按照語言編寫的方式重新編寫代碼,而不是試圖強制一些C代碼編譯它。 – UnholySheep