Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Anstatt auf einen bestimmten Werte-Typ zu zeigen, trifft ein Zeiger keine Annahmen über den Typ der zugrunde liegenden Daten. Dieses Vorgehen ist nützlich, wenn man direkt mit dem Speicher arbeiten muss. Es existiert eine implizite Konvertierung von jedem Zeiger-Typ auf void*. Ein void* kann nicht dereferenziert werden, ebenfalls sind keine arithmetischen Operationen möglich:
class Test
{
unsafe static void Main()
{
short[ ] a = {1,1,2,3,5,8,13,21,34,55};
fixed (short* p = a)
{
// sizeof liefert die Größe von Werte-Typen
// in Byte zurück
Zap (p, a.Length * sizeof (short));
}
foreach (short x in a)
System.Console.WriteLine (x); // Gibt Nullen aus
}
unsafe static void Zap (void* memory, int byteCount)
{
byte* b = (byte*)memory;
for (int i = 0; i < byteCount; i++)
*b++ = 0;
}
}