Давайте рассмотрим этот фрагмент кода:
static void Main(string[] args)
{
Console.WriteLine(Marshal.SizeOf(typeof(bool)));
Console.WriteLine(String.Join(", ", BitConverter.GetBytes(true)));
}
если bool равен 1 байту, я ожидаю, что он выдаст
1
1
и если bool равен 4 байта (как целое число), я бы ожидал
4
1, 0, 0, 0 // давайте забудем о порядке байтов
Однако он выводит (в x64)
4
1
Это довольно большая проблема для меня в коде маршалинга. Кому я должен доверять?
Обратите внимание, что GetBytes принимает логическое значение в качестве ввода: