unsafe (Riferimenti per C#)

La parola chiave unsafe denota un contesto unsafe, che è richiesto per qualsiasi operazione che comporti l'uso dei puntatori. Per ulteriori informazioni, vedere Codice unsafe e puntatori (Guida per programmatori C#).

È possibile utilizzare il modificatore unsafe nella dichiarazione di un tipo o di un membro. L'intero ambito testuale del tipo o del membro viene pertanto considerato un contesto unsafe. Di seguito è ad esempio riportato un metodo dichiarato con il modificatore unsafe:

unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
    // Unsafe context: can use pointers here.
}

L'ambito del contesto unsafe si estende dall'elenco dei parametri fino alla fine del metodo. In questo modo, è possibile utilizzare puntatori anche nell'elenco dei parametri.

unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}

È anche possibile utilizzare un blocco unsafe per consentire l'uso di un codice unsafe all'interno del blocco. Di seguito è riportato un esempio.

unsafe
{
    // Unsafe context: can use pointers here.
}

Per compilare codice unsafe, è necessario specificare l'opzione del compilatore /unsafe. Il codice unsafe non può essere verificato da Common Language Runtime.

Esempio

    // 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

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Riferimenti

Parole chiave di C#

Istruzione fixed (Riferimenti per C#)

Codice unsafe e puntatori (Guida per programmatori C#)

Buffer a dimensione fissa (Guida per programmatori C#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#