动态设定值上阵的指针到整数
-
13-09-2019 - |
题
我有一个multidimentional列指针指向整数(未知的级别)被传递到我的功能作这样的:
public unsafe static void MyMethod(Array source, ...)
{
//...
}
多层面阵列的指针,都正在建造之外的方法,并正在通过。这里有一个例子:
int*[,,,] testArray = new int*[10,10,5,5];
MyMethod(testArray);
我怎么可以设定一个数值在运行时计算的指标阵列中的?阵列。设定值(...)工作的完美的非指阵列,但拒绝工作为我int*阵列。使用反射镜,我看到的设定值减少了向下调InternalSetValue这需要对象的价值,但它的标记为外部而且我不能看见的执行情况。我参加了一个在黑暗中拍摄,并试图通过在装箱的指针,但未成功。
解决方案
此工作的:
unsafe static void MyMethod(int** array)
{
array[10] = (int*)0xdeadbeef;
}
private static unsafe void Main()
{
int*[, , ,] array = new int*[10, 10, 10, 10];
fixed (int** ptr = array)
{
MyMethod(ptr);
}
int* x = array[0, 0, 1, 0]; // == 0xdeadbeef
}
这是否帮助?
问题专家:这是错误的假设数组在内存中连续分配
?其他提示
这不起作用,因为这是不可能的盒的指针。净的,所以你可以永远不会叫的 Array.SetValue
并通过一个 int*
.
你可以宣布 MyMethod
接受 int*[,,,]
而不是?
编辑: 进一步阅读, 一个有趣的最近的后从埃里克利珀特.
不隶属于 StackOverflow