Warum müssen Puffer (Arrays) mit fester Größe unsicher sein?

Angenommen, ich möchte einen Werttyp von 7 Byte (oder 3 oder 777) haben.

Ich kann es so definieren:

public struct Buffer71
{
    public byte b0;
    public byte b1;
    public byte b2;
    public byte b3;
    public byte b4;
    public byte b5;
    public byte b6;
}

Ein einfacherer Weg, es zu definieren, ist die Verwendung eines festen Puffers

public struct Buffer72
{
    public unsafe fixed byte bs[7];
}

Natürlich ist die zweite Definition einfacher. Das Problem liegt in dem unsicheren Schlüsselwort, das für feste Puffer bereitgestellt werden muss. Ich verstehe, dass dies mithilfe von Zeigern implementiert und daher unsicher ist.

Meine Frage ist, warum es unsicher sein muss? Warum kann C # keine Arrays mit beliebiger konstanter Länge bereitstellen und als Werttyp beibehalten, anstatt ein Array mit C # -Referenztyp oder unsichere Puffer daraus zu machen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage