这里的措辞有点强硬,但肯定有点言外之意
unsafe
和
fixed
会有用的。无记忆拷贝,直接存取,加胡椒和盐调味
这个
清除
只是不会让你像你想的那样投射一个数组,你能想到的任何其他方法都需要分配一个新的数组并复制(这意味着你可以很快变亮)。唯一可能的另一种方法是使用fixed,它将为您提供连续的一维数组。
unsafe public static void SomeMethod(int* p, int size)
{
for (var i = 0; i < 4; i++)
{
//Perform any linear operation
*(p + i) *= 10;
}
}
...
var someArray = new int[2,2];
someArray[0, 0] = 1;
someArray[0,1] = 2;
someArray[1, 0] = 3;
someArray[1, 1] = 4;
//Reshape an array to a linear array
fixed (int* p = someArray)
{
SomeMethod(p, 4);
}
//Reshape result array to original rank and dimensions.
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
Console.WriteLine(someArray[i, j]);
}
}
输出
10
20
30
40