Por que os buffers de tamanho fixo (matrizes) devem ser inseguros?

Digamos que eu quero ter um tipo de valor de 7 bytes (ou 3 ou 777).

Eu posso definir assim:

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

Uma maneira mais simples de defini-lo é usar um buffer fixo

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

Claro que a segunda definição é mais simples. O problema está na palavra-chave não segura que deve ser fornecida para os buffers fixos. Eu entendo que isso é implementado usando ponteiros e, portanto, inseguro.

Minha pergunta é por que isso tem que ser inseguro? Por que o C # não pode fornecer matrizes arbitrárias de comprimento constante e mantê-las como um tipo de valor, em vez de torná-la uma matriz do tipo de referência C # ou buffers inseguros?

questionAnswers(1)

yourAnswerToTheQuestion