unsafe
Ключевое слово unsafe открывает
контекст для
указателей.
Адрес локальной переменной действует,
пока переменная в кадре; не сохраняйте
указатель после выхода из метода.
См. также
fixed для массивов.
Синтаксис
unsafe
{
int* p = &x;
}
Пример
Давайте прочитать x через указатель:
using System;
class Program
{
static void Main()
{
int x = 12345;
unsafe
{
int* p = &x;
int res = *p;
Console.WriteLine(res);
}
}
}
Результат выполнения кода:
12345
Пример
Давайте изменить значение через *p:
using System;
class Program
{
static void Main()
{
int x = 1;
unsafe
{
int* p = &x;
*p = 2;
}
Console.WriteLine(x);
}
}
Результат выполнения кода:
2
Пример
Давайте сравнить адрес и переменную после блока:
using System;
class Program
{
static void Main()
{
int x = 12345;
unsafe
{
int* p = &x;
*p = 12345;
}
Console.WriteLine(x);
}
}
Результат выполнения кода:
12345
Смотрите также
-
указатель,
*pи&x -
fixed,
закрепление массива -
stackalloc,
буфер на стеке -
ref-возврат,
безопасная ссылка