Почему фиксированный размер буферов (массивов) должен быть небезопасным?

Допустим, я хочу иметь тип значения 7 байтов (или 3 или 777).

Я могу определить это так:

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

Более простой способ определить это - использовать фиксированный буфер

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

Конечно, второе определение проще. Проблема заключается в небезопасном ключевом слове, которое должно быть предоставлено для фиксированных буферов. Я понимаю, что это реализовано с помощью указателей и, следовательно, небезопасно.

Мой вопрос: почему это должно быть небезопасно? Почему C # не может предоставлять произвольные массивы постоянной длины и сохранять их как тип значения вместо того, чтобы делать это массивом ссылочного типа C # или небезопасными буферами?

Ответы на вопрос(1)

Ваш ответ на вопрос