Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Indem Sie einen Typ, einen Typ-Member oder einen Anweisungsblock mit dem Schlüsselwort unsafe kennzeichnen, dürfen Sie innerhalb dieses Geltungsbereichs Zeiger-Typen nutzen und Zeiger-Operationen im C++-Stil auf Speicherbereichen durchführen. Hier ein Beispiel für die Verwendung von Zeigern, um eine Bitmap schnell zu verarbeiten:
unsafe void RedFilter(int[,] bitmap)
{
int length = bitmap.Length;
fixed (int* b = bitmap)
{
int* p = b;
for(int i = 0; i < length; i++)
*p++ &= 0xFF;
}
}
Unsicherer Code kann schneller laufen als die entsprechende sichere Implementierung. In diesem Fall wäre eine verschachtelte Schleife mit Array-Indexierung und Prüfung der Array-Grenzen notwendig. Eine unsichere C#-Methode kann auch schneller sein als das Aufrufen einer externen C-Funktion, da es keinen Overhead gibt, der durch das Verlassen der verwalteten Ausführungsumgebung entsteht.