比方说,假设(阅读:我不认为我真的需要这个,但我很好奇这个想法突然出现在我的脑海中),有人想要在堆栈上本地预留内存数组,而不是在堆上.例如,像这样:
private void someFunction()
{
int[20] stackArray; //C style; I know the size and it's set in stone
}
我猜答案是否定的。我所能找到的只是基于堆的数组。如果有人需要这个,会有任何解决方法吗?有没有办法以“值类型”的方式预留一定数量的顺序内存?还是具有命名参数的结构是唯一的方式(就像 XNA 中的 Matrix struct 有 16 个命名参数 (M11-M44))?
最佳答案
你要的是stackalloc
;不幸的是,您只能在不安全的代码中使用它,这意味着它不会在有限权限的上下文中运行。
您还可以为每个元素类型创建一个结构,其中包含必要数量的变量,但是您需要为每个要使用的“数组”大小创建一个新类型
关于c# - C# 中是否可以使用基于堆栈的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456071/