unsafe (C#-Referenz)

Das Schlüsselwort unsafe kennzeichnet einen unsicheren Kontext, der für alle Zeigeroperationen erforderlich ist. Weitere Informationen finden Sie unter Unsicherer Code und Zeiger.

Sie können bei der Deklaration eines Typs oder Members den Modifizierer unsafe verwenden. Daraufhin wird der gesamte Text des Typs oder Members als unsicherer Kontext angesehen. Hier sehen Sie eine Methode, die mit dem Modifizierer unsafe deklariert wurde:

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

Der unsichere Kontext erstreckt sich von der Parameterliste bis zum Ende der Methode, weshalb in der Parameterliste auch Zeiger verwendet werden können:

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

Sie können auch einen unsafe-Block verwenden, um die Verwendung von unsicherem Code in diesem Block zu aktivieren. Beispiel:

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

Um unsicheren Code kompilieren zu können, müssen Sie die Compileroption AllowUnsafeBlocks angeben. Unsicherer Code kann nicht von der Common Language Runtime überprüft werden.

Beispiel

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

C#-Sprachspezifikation

Weitere Informationen finden Sie unter Unsafe-Code in der C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch