gpt4 book ai didi

c# - C#中使用非托管指针初始化数组数组

转载 作者:太空宇宙 更新时间:2023-11-03 22:24:23 27 4
gpt4 key购买 nike

我想在现有的大小合适的 int[] 之上定义一个数组,例如 int[][]。然后我想在引用相同的内部数据时无缝地使用 int[][] array of array 或 int[] 'big' array。

是否可以使用非托管代码在 C# 中执行此操作?在 C++ 中,我会这样定义指针:

int* bigArray = new int[numberOfRows * numberOfColumns];
int** matrix = new int*[numberOfRows];

for (int i = 0; i < numberOfRows; i ++)
{
matrix[i] = (bigArray + i * numberOfColumns);
}

最佳答案

是的,您也可以在 C# 中使用指针,但它有一些限制。 1、你需要声明函数不安全,另外,你需要在项目属性中设置构建选项以允许不安全代码,这里是关于它的示例代码:

        unsafe static void T1(int numberOfRows, int numberOfColumns)
{
int* bigArray = stackalloc int[numberOfRows * numberOfColumns];
int** matrix = stackalloc int*[numberOfRows];

for (int i = 0; i < numberOfRows; i++)
{
matrix[i] = (bigArray + i * numberOfColumns);
}

}

请记住,只有当您非常清楚您可以完全控制您的代码时,您才能使用指针。虽然不建议您在 C# 中使用指针

关于c# - C#中使用非托管指针初始化数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1928221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com