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. Zum Beispiel:

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

Um unsicheren Code kompilieren zu können, müssen Sie die Compileroption /unsafe 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#-Programmiersprachenspezifikation

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch

C#-Referenz
C#-Programmierhandbuch
C#-Schlüsselwörter
fixed-Anweisung
Unsicherer Code und Zeiger
Puffer fester Größe