Código não seguro e ponteiros (Guia de Programação em C#)Unsafe Code and Pointers (C# Programming Guide)

Para manter a segurança de tipos e a segurança, o C# não dá suporte à aritmética de ponteiro por padrão.To maintain type safety and security, C# does not support pointer arithmetic, by default. No entanto, usando a palavra-chave unsafe, você pode definir um contexto não seguro no qual os ponteiros podem ser usados.However, by using the unsafe keyword, you can define an unsafe context in which pointers can be used. Para obter mais informações sobre ponteiros, consulte o tópico Tipos de ponteiro.For more information about pointers, see the topic Pointer types.

Observação

No CLR (Common Language Runtime), o código não seguro é conhecido como código não verificado.In the common language runtime (CLR), unsafe code is referred to as unverifiable code. O código não seguro em C# não é necessariamente perigoso. Ele é apenas o código cuja segurança não pode ser verificada pelo CLR.Unsafe code in C# is not necessarily dangerous; it is just code whose safety cannot be verified by the CLR. O CLR, portanto, executará somente o código não seguro se ele estiver em um assembly totalmente confiável.The CLR will therefore only execute unsafe code if it is in a fully trusted assembly. Se você usar código não seguro, será sua responsabilidade assegurar que seu código não apresente riscos de segurança ou erros de ponteiro.If you use unsafe code, it is your responsibility to ensure that your code does not introduce security risks or pointer errors.

Visão Geral de Código Não SeguroUnsafe Code Overview

O código não seguro tem as propriedades a seguir:Unsafe code has the following properties:

  • Blocos de código, tipos e métodos podem ser definidos como não seguros.Methods, types, and code blocks can be defined as unsafe.

  • Em alguns casos, o código não seguro pode aumentar o desempenho de um aplicativo removendo as verificações de limites de matriz.In some cases, unsafe code may increase an application's performance by removing array bounds checks.

  • O código não seguro é necessário quando você chama funções nativas que exigem ponteiros.Unsafe code is required when you call native functions that require pointers.

  • Usar o código não seguro apresenta riscos de segurança e estabilidade.Using unsafe code introduces security and stability risks.

  • Para que o C# compile o código não seguro, o aplicativo deve ser compilado com /unsafe.In order for C# to compile unsafe code, the application must be compiled with /unsafe.

Para obter mais informações, consulte:For more information, see:

Especificação da Linguagem C#C# Language Specification

Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte tambémSee Also

Guia de Programação em C#C# Programming Guide