我创建了一个简单的结构,它由两个值类型组成.
public struct Identifier
{
public Guid ID { get; set; }
public Byte RequestType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我使用以下语句Marshal.SizeOf()在自定义结构上调用方法Identifier.
Identifier i = new Identifier();
Console.WriteLine(Marshal.SizeOf(i)); // output: 20
Console.WriteLine(Marshal.SizeOf(i.GetType())); // output: 20
Run Code Online (Sandbox Code Playgroud)
为什么不Marshal.SizeOf()回17?以下指令显示Guid对象为16个字节,字节object为1个字节.
Guid g = Guid.NewGuid();
Console.WriteLine(Marshal.SizeOf(g)); // output: 16
Console.WriteLine(Marshal.SizeOf(g.GetType())); // output: 16
Byte t = 0;
Console.WriteLine(Marshal.SizeOf(t)); // output: 1
Console.WriteLine(Marshal.SizeOf(t.GetType())); // output: 1
Run Code Online (Sandbox Code Playgroud)