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?