Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
La unsafe palabra clave denota un contexto no seguro, que es necesario para cualquier operación que implique punteros. Para obtener más información, consulte Código no seguro y punteros.
La documentación de referencia del lenguaje C# cubre la versión más reciente publicada del lenguaje C#. También contiene documentación inicial sobre las características de las versiones preliminares públicas de la próxima versión del lenguaje.
La documentación identifica cualquier característica introducida por primera vez en las últimas tres versiones del idioma o en las versiones preliminares públicas actuales.
Sugerencia
Para buscar cuándo se introdujo por primera vez una característica en C#, consulte el artículo sobre el historial de versiones del lenguaje C#.
Use el unsafe modificador en la declaración de un tipo o un miembro. La extensión textual completa del tipo o miembro es un contexto no seguro. Por ejemplo, el método siguiente se declara con el unsafe modificador :
unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
// Unsafe context: can use pointers here.
}
El ámbito del contexto no seguro se extiende desde la lista de parámetros hasta el final del método, por lo que también puede usar punteros en la lista de parámetros:
unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
También puede usar un bloque no seguro para habilitar el uso de código no seguro dentro de este bloque. Por ejemplo:
unsafe
{
// Unsafe context: can use pointers here.
}
Para compilar código no seguro, debe especificar la opción del compilador AllowUnsafeBlocks . Common Language Runtime no puede comprobar el código no seguro.
Ejemplo
// 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
Especificación del lenguaje C#
Para obtener más información, vea Código no seguro en la especificación del lenguaje C#. La especificación del lenguaje es el origen definitivo de la sintaxis y el uso de C#.