ExpertiDict

C# · Avançado · Inglês · Técnico

unsafe

/ʌnˈseɪf/palavra-chave

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); // 7

Exemplos

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

Veja também

Todos os termos de C#