C#/c++ Ссылки

  • Автор темы Villiya
  • Дата начала
V

Villiya

#1
доброго времени суток. подскажите пожалуста если переводить код C++ на C# (без использования unsafe) достаточно ли в конструкции вида
C++:
Calc(int NN,int LL,double *x,double **y,double **z)
C++:
double *x
заменить на out double x?

и какой аналог есть для
C++:
double** y
?

каким образом можно записать на C#
C++:
MinMaxFloat2D(double** x, int LL, int NN,double* xmn, double* xmx)
{
*xmx=x[0][0];
*xmn=x[0][0];

for(int i=0; i<LL; i++)
{
for(int j=0; j<NN; j++)
{
if(x[i][j]>*xmx) *xmx=x[i][j];
if(x[i][j]<*xmn) *xmn=x[i][j];
}
}

}
если она имеет следующий вызов
C++:
MinMaxFloat2D(x,LL,NN,&xmin,&xmax);
заранее спасибо.
 

LuMee

Well-known member
02.05.2006
477
0
#2
Более точным аналогом double* x, будет, я думаю, ref double x, если этот x до вызова функции уже содержит какое-то важное значение. Опять же, под этим, насколько помню, может подразумеваться массив, тогда аналогом станет double[] x.
В случае с double** y, скорее всего, имеется в виду как раз двухмерный массив - double[][] y.

Вышеприведенная функция, таким образом, превращается во что-то типа:
Код:
MinMaxFloat2D(double[][] x, int LL, int NN, out double xmn, out double xmx)
{
xmx=x[0][0];
xmn=x[0][0];

for(int i=0; i<LL; i++)
{
for(int j=0; j<NN; j++)
{
if(x[i][j] > xmx) xmx=x[i][j];
if(x[i][j] < xmn) xmn=x[i][j];
}
}
}