良好的一天类型的操作数,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