Хотите сделать это:
(РЕДАКТИРОВАТЬ: неправильный пример кода, игнорируйте и пропустите ниже)
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];
}
Но, поскольку я не могу объявить размеры массива в структуре, как мне это переконфигурировать?
РЕДАКТИРОВАТЬ: Причина для макета я использую BinaryReader для чтения файла, написанного с помощью структур C. Используя BinaryReader и объединение структур C# (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
}
Подробнее здесь: https://stackoverflow.com/questions/870 ... n-a-struct