Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La palabra clave unsafe
denota un contexto no seguro, que es necesario para realizar cualquier operación que implique punteros. Para obtener más información, vea Código no seguro y punteros (Guía de programación de C#).
Puede usar el codificador unsafe
en la declaración de un tipo o miembro. Por consiguiente, toda la extensión textual del tipo o miembro se considera un contexto no seguro. Por ejemplo, el siguiente método se declara con el modificador unsafe
:
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 pueden usarse punteros en la lista de parámetros:
unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
También puede usarse un bloque no seguro para habilitar el uso de código no seguro en el 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 más información, vea la sección sobre código no seguro de la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.