stackalloc
stackalloc создаёт буфер, который
живёт только в этом методе. Его нельзя
вернуть как ref или передать наружу
после выхода из кадра. Часто результат
кладут в локальный Span<int>
- это ref struct.
Синтаксис
Span<int> buf = stackalloc int[] { 1, 2, 3 };
Пример
Давайте прочитать первый элемент буфера:
using System;
class Program
{
static void Main()
{
Span<int> buf = stackalloc int[] { 1, 2, 3 };
int res = buf[0];
Console.WriteLine(res);
}
}
Результат выполнения кода:
1
Пример
Давайте вывести Length:
using System;
class Program
{
static void Main()
{
Span<int> buf = stackalloc int[] { 1, 2, 3 };
int res = buf.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
3
Пример
Давайте изменить элемент внутри метода:
using System;
class Program
{
static void Main()
{
Span<int> buf = stackalloc int[] { 1, 2, 3 };
buf[0] = 9;
Console.WriteLine(buf[0]);
}
}
Результат выполнения кода:
9
Смотрите также
-
ref struct,
ограниченияSpan -
unsafe,
указатели на стек -
fixed,
закрепление массива -
указатель,
чтение по адресу