我刚刚发现stackalloc
C# 的符号有一个令人难以置信的怪癖,请看下面的代码:
// int *p;
// p = stackalloc int[42]; // won't work!
// Error CS1525: Unexpected symbol `stackalloc' (CS1525)
int *p = stackalloc int[42]; //works
我的意图是在这样的三元表达式中使用 stackalloc:
int *p = size > 0xFFFFF ? (int*)Marshal.AllocHGlobal(size).ToPointer() : stackalloc int[size];
编译器完全出乎意料的打击让我震惊。如果有人能对这种奇怪的行为有所了解,我将不胜感激。我已经在单声道和 .net 上对其进行了测试,但都不起作用。