Muốn làm được điều này: (EDIT: mẫu mã xấu, bỏ qua và bỏ qua bên dưới)C# mảng trong một struct
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];
}
Nhưng không có khả năng tuyên bố kích thước mảng trong struct, làm thế nào để cấu hình lại này?
EDIT: Lý do bố cục là tôi đang sử dụng BinaryReader để đọc tệp được viết bằng cấu trúc C. Sử dụng BinaryReader, và một C# struct union (FieldOffset (0)), tôi muốn tải tiêu đề như là một mảng byte, sau đó đọc nó như nó đã được dự định ban đầu.
[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
}
Bộ đệm kích thước cố định - http://msdn.microsoft.com/en-us/library/zycewsya.aspx – Joren
@Joren, tại sao không thêm nó làm câu trả lời? – atoMerz
Bạn biết rằng C# 'char' là 2 byte trong khi C' char' thường là 1 byte, phải không? – CodesInChaos