C# · Avançado · Inglês · Técnico
unsafe
Contexto que permite ponteiros e aritmética de endereços em C#, sem as garantias de memória do código gerenciado. Exige AllowUnsafeBlocks no projeto e cuidado redobrado.
Onde usar
Aparece em interop e em rotinas de alto desempenho, como processar pixels de uma imagem. Um erro de índice vira corrupção de memória em vez de exceção, então o uso deve ser raro e isolado.
Em código
// requer AllowUnsafeBlocks no csproj
int x = 5;
unsafe
{
int* p = &x;
*p = 7;
}
Console.WriteLine(x); // 7Exemplos
That block is unsafe, so review it twice.
Esse bloco é unsafe, então revise duas vezes.
Enable AllowUnsafeBlocks in the project first.
Habilite o AllowUnsafeBlocks no projeto primeiro.
Cuidado
Não use unsafe por achar que é mais rápido: Span<T> e ref cobrem a maioria dos casos com segurança.
Antônimos
código gerenciado