Código no seguro y punteros (guía de programación de C#)Unsafe code and pointers (C# Programming Guide)

Para mantener la seguridad de tipos, C# no admite la aritmética de puntero de forma predeterminada.To maintain type safety and security, C# does not support pointer arithmetic, by default. En cambio, mediante el uso de la palabra clave unsafe, puede definir un contexto no seguro en el que se pueden usar punteros.However, by using the unsafe keyword, you can define an unsafe context in which pointers can be used. Para más información sobre los punteros, vea Tipos de puntero.For more information about pointers, see Pointer types.

Nota

En Common Language Runtime (CLR), el código no seguro se conoce como código no comprobable.In the common language runtime (CLR), unsafe code is referred to as unverifiable code. El código no seguro en C# no es necesariamente peligroso; solo es código cuya seguridad no puede comprobar CLR.Unsafe code in C# is not necessarily dangerous; it is just code whose safety cannot be verified by the CLR. Por lo tanto, CLR solo ejecutará código no seguro si se encuentra en un ensamblado de plena confianza.The CLR will therefore only execute unsafe code if it is in a fully trusted assembly. Si usa código no seguro, es su responsabilidad asegurarse de que el código no presenta riesgos de seguridad o errores de puntero.If you use unsafe code, it is your responsibility to ensure that your code does not introduce security risks or pointer errors.

Introducción sobre el código no seguroUnsafe code overview

El código no seguro tiene las propiedades siguientes:Unsafe code has the following properties:

  • Los métodos, tipos y bloques de código se pueden definir como no seguros.Methods, types, and code blocks can be defined as unsafe.

  • En algunos casos, el código no seguro puede aumentar el rendimiento de la aplicación al eliminar las comprobaciones de límites de matriz.In some cases, unsafe code may increase an application's performance by removing array bounds checks.

  • El código no seguro es necesario al llamar a funciones nativas que requieren punteros.Unsafe code is required when you call native functions that require pointers.

  • El código no seguro presenta riesgos para la seguridad y la estabilidad.Using unsafe code introduces security and stability risks.

  • El código que contiene bloques no seguros debe compilarse con la opción del compilador -unsafe.The code that contains unsafe blocks must be compiled with the -unsafe compiler option.

Para obtener más información, consulte:For more information, see:

Especificación del lenguaje C#C# language specification

Para más información, vea el tema sobre código no seguro de la Especificación del lenguaje C#.For more information, see the Unsafe code topic of the C# language specification.

Vea tambiénSee also