gpt4 book ai didi

c# - 是否有必要仅在定义指向它的指针的同一行中使用 `stackalloc`?

转载 作者:太空宇宙 更新时间:2023-11-03 11:58:59 25 4
gpt4 key购买 nike

在下面的代码中:

unsafe
{
int m = 10;
int n = 10;
double*[] a = new double*[m];
for (int i = 0; i < m; i++)
{
double* temp = stackalloc double[n];
a[i] = temp;
}
}

有什么方法可以删除多余的变量 temp 吗?

代码:

a[i] = stackalloc double[n];

有编译错误:

Severity Code Description Project File Line Suppression State Error CS8346 Conversion of a stackalloc expression of type 'double' to type 'double*' is not possible.

最佳答案

Is it necessary to use stackalloc only in the same line you define the pointer to it?

是的,这是必要的according to the C# language specification .

具体来说,请参阅堆栈分配部分,该部分将语法指定为:

local_variable_initializer_unsafe
: stackalloc_initializer
;

stackalloc_initializer
: 'stackalloc' unmanaged_type '[' expression ']'
;

如您所见,您必须local_variable_initializer_unsafestackalloc_initializer一起使用,这意味着您必须声明一个局部变量以使用stackalloc 的结果。

(从技术上讲,您可以根据需要在语句中放置任意多的换行符,但我很确定这不是您要问的!)

关于c# - 是否有必要仅在定义指向它的指针的同一行中使用 `stackalloc`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57987272/

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