Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A unsafe palavra-chave indica um contexto não seguro, que é necessário para qualquer operação que envolva ponteiros. Para obter mais informações, consulte Código e ponteiros não seguros.
A linguagem C# faz referência a documentos da versão mais recentemente lançada da linguagem C#. Ele também contém a documentação inicial para funcionalidades em pré-visualizações públicas para o próximo lançamento do idioma.
A documentação identifica qualquer recurso introduzido pela primeira vez nas três últimas versões do idioma ou nas versões prévias públicas atuais.
Dica
Para descobrir quando um recurso foi introduzido pela primeira vez em C#, consulte o artigo sobre o histórico de versão da linguagem C#.
Use o unsafe modificador na declaração de um tipo ou membro. Toda a extensão textual do tipo ou membro é um contexto não seguro. Por exemplo, o seguinte método é declarado com o unsafe modificador:
unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
// Unsafe context: can use pointers here.
}
O escopo do contexto não seguro se estende da lista de parâmetros até o final do método, para que você também possa usar ponteiros na lista de parâmetros:
unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
Você também pode usar um bloco não seguro para habilitar o uso de código não seguro dentro desse bloco. Por exemplo:
unsafe
{
// Unsafe context: can use pointers here.
}
Para compilar código não seguro, você deve especificar a opção do compilador AllowUnsafeBlocks . O common language runtime não pode verificar o código não seguro.
Exemplo
// compile with: -unsafe
class UnsafeTest
{
// Unsafe method: takes pointer to int.
unsafe static void SquarePtrParam(int* p)
{
*p *= *p;
}
unsafe static void Main()
{
int i = 5;
// Unsafe method: uses address-of operator (&).
SquarePtrParam(&i);
Console.WriteLine(i);
}
}
// Output: 25
Especificação da linguagem C#
Para obter mais informações, consulte código não seguro na Especificação da Linguagem C#. A especificação de idioma é a fonte definitiva para a sintaxe e o uso de C#.