为什么 sizeof(Point) 是 8?

Why sizeof(Point) is 8?

我写了代码得到了奇怪的结果——整数 i 是 8:

unsafe
        {
            int i = sizeof(Point);
        }

检查结构点后,我发现了这个字段:

    public bool IsEmpty { get; }
    public int X { get; set; }
    public int Y { get; set; }

位数学:32+32+1 = 65 位,> 8 字节也是如此

那么,为什么 sizeof returns 8 而不是 9?

谢谢

IsEmpty 是一个 属性,不是一个字段。属性只是幕后的方法,因此它们不是结构大小的一部分。

Pointframework implementation只使用了两个属性:

private int x;
private int y; 

Empty 实现为

[Browsable(false)]
public bool IsEmpty { 
    get {
        return x == 0 && y == 0;
    }
} 

两个 int 字段占用 8 个字节 - 一切正常。