2

为什么char需要 1 个字节,Marshal.SizeOfbool需要 4 个字节。char没有比bool更多的状态吗

char c = '\x0011';
bool b = true;
Console.WriteLine("char: " + Marshal.SizeOf(c).ToString() + "\n" 
                + "bool: " + Marshal.SizeOf(b).ToString());

//char: 1
//bool: 4
4

1 回答 1

3

您正在查看 Marshal 类的内容。试试这个看看编译器是怎么想的:

 Console.WriteLine("char: " + sizeof(char).ToString() + "\n"
                 + "bool: " + sizeof(bool).ToString());

字符:2
布尔值:1

应用于Marshal.SizeOf()局部变量不是预期用途。基本思想是您创建一个structfor interop,然后填充的概念变得相关。

于 2012-07-28T07:29:49.627 回答