unsafe (C#-Referenz)
Aktualisiert: November 2007
Das unsafe-Schlüsselwort deutet auf einen nicht sicheren Kontext hin, der für alle Zeigeroperationen erforderlich ist. Weitere Informationen hierzu finden Sie unter Unsicherer Code und Zeiger (C#-Programmierhandbuch).
Sie können den unsafe-Modifizierer in der Deklaration eines Typs oder Members verwenden. Daraufhin wird der gesamte Text des Typs oder Members als nicht sicherer Kontext betrachtet. Das folgende Beispiel enthält beispielsweise eine Methode, die mit dem unsafe-Modifizierer deklariert wurde:
unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
// Unsafe context: can use pointers here.
}
Der Gültigkeitsbereich des nicht sicheren Kontexts reicht von der Parameterliste bis zum Methodenende, sodass auch in der Parameterliste Zeiger verwendet werden können:
unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
Sie können auch einen nicht sicheren Block verwenden, um die Verwendung unsicheren Codes innerhalb dieses Blocks zu ermöglichen. Beispiel:
unsafe
{
// Unsafe context: can use pointers here.
}
Zum Kompilieren von unsicherem Code muss die /unsafe-Compileroption angegeben werden. Unsicherer Code kann nicht durch die 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 finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
- 18 Unsicherer Code
Siehe auch
Konzepte
Referenz
Unsicherer Code und Zeiger (C#-Programmierhandbuch)
Puffer fester Größe (C#-Programmierhandbuch)