【发布时间】:2020-10-02 21:36:26
【问题描述】:
需要将一些c++代码转换成c#。在这种情况下,我需要将多维数组的第二维传递给函数 dot(...)。
这是原来的c++声明/*和定义*/,后跟全局静态const数组。
double dot( const int* g, const double x, const double y ) /*{ return g[0]*x + g[1]*y; }*/;
static const int grad3[ 12 ][ 3 ] = {...};
在 c# 中可能是这样的:
public class TestClass
{
float dot( ref int[] g, float x, float y ) { return g[0] * x + g[1] * y; }
public static readonly int[,] grad3 = new int[12, 3]{...};
}
下面是一个例子,看看应该如何访问它:
public class TestClass
{
...
void test()
{
int gi0 = 0;
double d1 = dot( grad3[ gi0 ], x0, y0, z0 );
}
}
【问题讨论】:
-
多维数组内存按等级排列,你可以只使用指针和等级大小+偏移量来进行计算。
标签: c# multidimensional-array arguments