Хотите сделать это: (EDIT: неверный код примера, игнорировать и пропустить ниже)
struct RECORD {
char[] name = new char[16];
int dt1;
}
struct BLOCK {
char[] version = new char[4];
int field1;
int field2;
RECORD[] records = new RECORD[15];
char[] filler1 = new char[24];
}
Но не имея возможности объявить размеры массива в структуре, как мне перенастроить это?
EDIT: причина для макета - я использую BinaryReader для чтения файла, написанного с помощью C-структур. Используя BinaryReader и С# struct union (FieldOffset (0)), я хочу загрузить заголовок как массив байтов, а затем прочитать его, поскольку он был первоначально изначально.
[StructLayout(LayoutKind.Sequential)]
unsafe struct headerLayout
{
[FieldOffset(0)]
char[] version = new char[4];
int fileOsn;
int fileDsn;
// and other fields, some with arrays of simple types
}
[StructLayout(LayoutKind.Explicit)]
struct headerUnion // 2048 bytes in header
{
[FieldOffset(0)]
public byte[] headerBytes; // for BinaryReader
[FieldOffset(0)]
public headerLayout header; // for field recognition
}