c# - C# 中是否可以使用基于堆栈的数组?

标签 c# .net arrays stack

比方说,假设(阅读:我不认为我真的需要这个,但我很好奇这个想法突然出现在我的脑海中),有人想要在堆栈上本地预留内存数组,而不是在堆上.例如,像这样:

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/

相关文章:

.net - 如何在新行上使用关闭节点和标签来格式化 XML?

javascript - 如何使用JavaScript分组嵌套数组?

sql - 在没有排列的情况下找到数组的所有可能组合

c# - 处理 OracleCommand 参数中的空值

c# - 需要在没有 UAC 弹出窗口的情况下提升权限

c# - Youtube Live API - 使用 OAuth 拒绝广播权限

.net - 关于将应用程序从 .Net Framework 移植到 .Net core 的问题

c# - 使用虚拟路径提供程序和 Amazon S3 SDK 上传文件

c# - 尝试在 C# 中加载程序集时出错

php - 合并数组 PHP