良い一日、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つの演算子 - 最高過負荷の2種類のオペランドに適用することができない「ULONG」と「int型
- エラー「」 「小数」に「オブジェクト」から変換することはできません
ルック「System.Math.Max(小数、10進数)」
- エラー「ダブル[]」と「ULONG」
- エラー5オペレーター ':
そしてメソッドpolintはちょっと同様のタイプの誤差を有しています+ 'は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メソッドからの出力として返されます。
ご迷惑をおかけして申し訳ありません。
「ダブル[]」から「double」のから変換することはできません:「ダブル[]」
エラー3引数2の「ダブル」 Cで可能です。C#で行うことはできません。 –
C#はCではありません。類似の名前を持っているからといって、その動作が同じであることが保証されるわけではありません。 C#を理解して、コードをコンパイルするように強制するのではなく、言語が意図したとおりにコードを書き直す必要があります。 – UnholySheep