为什么sizeof(Point)是8?

时间:2015-06-05 06:28:49

标签: c# .net sizeof

我编写代码并得到奇怪的结果 - 整数i是8:

unsafe
        {
            int i = sizeof(Point);
        }

检查struct Point后,我找到了这个字段:

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

位数学:32 + 32 + 1 = 65位,因此> 8个字节

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

谢谢

2 个答案:

答案 0 :(得分:10)

IsEmpty属性,而不是字段。属性只是幕后的方法,因此它们不属于结构的大小。

答案 1 :(得分:5)

Point的{​​{3}}仅使用两个属性:

private int x;
private int y; 

Empty实现为

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

两个int字段占用8个字节 - 一切都很好。