好的,所以我目前有一个包含未知数量的结构的二进制文件,如下所示:
private struct sTestStruct
{
public int numberOne;
public int numberTwo;
public int[] numbers; // This is ALWAYS 128 ints long.
public bool trueFalse;
}
到目前为止,我使用以下内容将所有结构读入 List<>:
List<sTestStruct> structList = new List<sTestStruct>();
while (binReader.BaseStream.Position < binReader.BaseStream.Length)
{
sTestStruct temp = new sTestStruct();
temp.numberOne = binReader.ReadInt32();
temp.numberTwo = binReader.ReadInt32();
temp.numbers = new int[128];
for (int i = 0; i < temp.numbers.Length; i++)
{
temp.numbers[i] = binReader.ReadInt32();
}
temp.trueFalse = binReader.ReadBoolean();
// Add to List<>
structList.Add(temp);
}
我真的不想这样做,因为一次只能向用户显示一个结构,因此一次读取多个记录是没有意义的。所以我认为我可以使用以下内容读取特定记录:
fileStream.Seek(sizeof(sTestStruct) * index, SeekOrigin.Begin);
但它不会让我因为它不知道 sTestStruct 的大小,结构不会让我预定义数组大小,所以我该怎么做呢?