Condividi tramite


unsafe (Riferimenti per C#)

La unsafe parola chiave indica un contesto non sicuro, necessario per qualsiasi operazione che coinvolge puntatori. Per altre informazioni, vedere Codice e puntatori unsafe.

Il riferimento al linguaggio C# documenta la versione rilasciata più di recente del linguaggio C#. Contiene anche la documentazione iniziale per le funzionalità nelle versioni di anteprima pubblica per la prossima versione del linguaggio di programmazione.

La documentazione identifica tutte le funzionalità introdotte nelle ultime tre versioni della lingua o nelle anteprime pubbliche correnti.

Suggerimento

Per trovare quando una funzionalità è stata introdotta per la prima volta in C#, vedere l'articolo sulla cronologia delle versioni del linguaggio C#.

Usare il unsafe modificatore nella dichiarazione di un tipo o di un membro. L'intero extent testuale del tipo o del membro è un contesto non sicuro. Ad esempio, il metodo seguente viene dichiarato con il unsafe modificatore:

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 di parametri alla fine del metodo, quindi è anche possibile usare i puntatori nell'elenco di parametri:

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

È anche possibile usare un blocco unsafe per abilitare l'uso di codice non sicuro all'interno di questo blocco. Per esempio:

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

Per compilare codice non sicuro, è necessario specificare l'opzione del compilatore AllowUnsafeBlocks . Common Language Runtime non è in grado di verificare il codice non sicuro.

Example

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

Specificazione del linguaggio C#

Per altre informazioni, vedere Codice unsafe nella specifica del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.

Vedere anche