Скажем, я хочу иметь тип значения 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];
}
Конечно, второе определение проще. Проблема заключается в небезопасном ключевом слове, который должен предоставляться для фиксированных буферов. Я понимаю, что это реализовано с использованием указателей и, следовательно, небезопасно.
Мой вопрос, почему он должен быть небезопасным? Почему С# не может создавать произвольные массивы постоянной длины и сохранять их как тип значения вместо того, чтобы создавать массив ссылочного типа С# или небезопасные буферы?