fixed
fixed внутри
unsafe
фиксирует массив на время блока.
Указатель
действует только внутри fixed;
после блока им не пользуются.
Синтаксис
unsafe
{
fixed (int* p = data)
{
}
}
Пример
Давайте прочитать data[0] через fixed:
using System;
class Program
{
static void Main()
{
int[] data = { 1, 2, 3 };
unsafe
{
fixed (int* p = data)
{
int res = p[0];
Console.WriteLine(res);
}
}
}
}
Результат выполнения кода:
1
Пример
Давайте прочитать второй элемент:
using System;
class Program
{
static void Main()
{
int[] data = { 1, 2, 3 };
unsafe
{
fixed (int* p = data)
{
int res = p[1];
Console.WriteLine(res);
}
}
}
}
Результат выполнения кода:
2
Пример
Давайте проверить массив после блока fixed:
using System;
class Program
{
static void Main()
{
int[] data = { 1, 2, 3 };
unsafe
{
fixed (int* p = data)
{
p[0] = 9;
}
}
Console.WriteLine(data[0]);
}
}
Результат выполнения кода:
9
Смотрите также
-
указатель,
p[i]внутриfixed -
unsafe,
контекст дляfixed -
ref-возврат,
доступ без указателя -
stackalloc,
стековый буфер