unsafe (C#-Referenz)unsafe (C# Reference)

Das Schlüsselwort unsafe kennzeichnet einen unsicheren Kontext, der für alle Zeigeroperationen erforderlich ist.The unsafe keyword denotes an unsafe context, which is required for any operation involving pointers. Weitere Informationen finden Sie unter Unsicherer Code und Zeiger.For more information, see Unsafe Code and Pointers.

Sie können bei der Deklaration eines Typs oder Members den Modifizierer unsafe verwenden.You can use the unsafe modifier in the declaration of a type or a member. Daraufhin wird der gesamte Text des Typs oder Members als unsicherer Kontext angesehen.The entire textual extent of the type or member is therefore considered an unsafe context. Hier sehen Sie eine Methode, die mit dem Modifizierer unsafe deklariert wurde:For example, the following is a method declared with the unsafe modifier:

      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:The scope of the unsafe context extends from the parameter list to the end of the method, so pointers can also be used in the parameter list:

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.You can also use an unsafe block to enable the use of an unsafe code inside this block. Zum Beispiel:For example:

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

Um unsicheren Code kompilieren zu können, müssen Sie die Compileroption /unsafe angeben.To compile unsafe code, you must specify the /unsafe compiler option. Unsicherer Code kann nicht von der Common Language Runtime überprüft werden.Unsafe code is not verifiable by the common language runtime.

BeispielExample

// 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#-ProgrammiersprachenspezifikationC# Language Specification

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

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
fixed-Anweisungfixed Statement
Unsicherer Code und ZeigerUnsafe Code and Pointers
Puffer fester GrößeFixed Size Buffers