Feste Puffer ohne unsafe
- Matt
Ein Puffer fester Größe innerhalb einer Struktur brauchte früher unsafe und fixed. Seit C# 12 nicht mehr:
[InlineArray(16)]
public struct Puffer16
{
private byte _element;
}
var p = new Puffer16();
p[3] = 42;
Span<byte> span = p;
Das einzelne Feld ist Absicht, die Größe kommt aus dem Attribut. Der Typ verhält sich danach wie ein Array fester Länge, liegt aber vollständig in der Struktur und damit ohne eigene Heap-Zuweisung.
Nützlich für Protokoll-Header, kleine Schlüssel und alles, was in Schleifen millionenfach entsteht. Für normalen Anwendungscode ist es Überoptimierung.