111,097
社区成员




// C++
int Sum(int* numbers, int count)
{
int sum = 0;
for(int i=0; i<count; i++) sum += numbers[i];
return sum;
}
// C#
int Sum(int[] numbers, int count);
而ref int[]是基本上不应该出现的。因为ref in[]对应C++中的int**,而int**一般用来返回一个数组的:
int SetData(int** ppData)
{
*ppData = (int*)malloc(1000 * sizeof(int));
//...
return 1000;
}
由于C++的指针不包含长度信息,它是不能直接转换为C#的数组的(C#的数组有长度信息)。因此不能用ref int[]来调用SetData。你可能试验过ref int[]可以用来传入数据。但关键一点是,如果只是用来传入数据,为何不直接用int[]来对应int*呢?