Допустим, я хочу иметь тип значения 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 # или небезопасными буферами?