¿Por qué las memorias intermedias de tamaño fijo (matrices) deben ser inseguras?

Digamos que quiero tener un tipo de valor de 7 bytes (o 3 o 777).

Puedo definirlo así:

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

Una forma más simple de definirlo es usar un búfer fijo

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

Por supuesto, la segunda definición es más simple. El problema radica en la palabra clave insegura que se debe proporcionar para buffers fijos. Entiendo que esto se implementa utilizando punteros y, por lo tanto, inseguro.

Mi pregunta es ¿por qué tiene que ser inseguro? ¿Por qué C # no puede proporcionar matrices arbitrarias de longitud constante y mantenerlas como un tipo de valor en lugar de convertirlas en una matriz de tipos de referencia de C # o memorias intermedias inseguras?

Respuestas a la pregunta(1)

Su respuesta a la pregunta