我编写代码并得到奇怪的结果 - 整数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?
谢谢
答案 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个字节 - 一切都很好。