Тест: что печатает следующая программа?
using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication2 {
[StructLayout(LayoutKind.Sequential, Pack=1)]
struct Struct1 {
bool b;
int i;
}
[StructLayout(LayoutKind.Sequential, Pack=1)]
struct Struct2 {
byte b;
int i;
}
class Program {
static void Main(string[] args) {
Console.WriteLine(Marshal.SizeOf(typeof(Struct1)));
Console.WriteLine(Marshal.SizeOf(typeof(Struct2)));
Console.ReadKey();
}
}
}
Ответ:
8
5
Меня это очень смущает. И bool, и byte имеют размер 1 байт, и указание [StructLayout(LayoutKind.Sequential, Pack=1)]
должно устранить любые проблемы с заполнением. Обе структуры должны быть 5 байт. Итак, у меня есть два вопроса:
Спасибо.