Fortran C# 混合编程时,数组参数的处理
当我们在C#中调用一个Fortran编写的函数并且包含数组参数时,需要做以下两个处理.
1.参数声明:
例如当参数为整型数组时,不管是1维还是2维数组,通通声明为"ref int array",调用时传入数组第一个元素的引用,如"ref arr[0,0]".
2.传入,读取多维数组:
简单的说不管我们传入一个2维数组还是读取一个2维数组的值,通通需要先进行"转置"处理.即先转置后传入,读取后也需要转置才能得到正确返回结果.
例如 定义需要传入 A[2,5] 数组时,先对A转置,传入A',但每一维的长度还是按转置前的数组进行传入
以下为C#转置矩阵的函数
1 public static T[,] MatrixConvert<T>(T[,] matrix)
2 {
3 T[,] result = new T[matrix.GetLength(1), matrix.GetLength(0)];
4 for (int i = 0; i < matrix.GetLength(0); i++)
5 {
6 for (int j = 0; j < matrix.GetLength(1); j++)
7 {
8 result[j, i] = matrix[i, j];
9 }
10 }
11 return result;
12 }