Нам приходится много взаимодействовать с собственным кодом, и в этом случае гораздо быстрее использовать небезопасные структуры, которые не требуют маршалинга. Однако мы не можем этого сделать, когда структуры содержат фиксированные буферы с непримитивными типами. Почему из компилятора С# требуется, чтобы фиксированные буферы были только примитивными типами? Почему буфер фиксированного размера не может быть создан из структуры, например:
[StructLayout(LayoutKind.Sequential)]
struct SomeType
{
int Number1;
int Number2;
}