为什么 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
是一个 属性,不是一个字段。属性只是幕后的方法,因此它们不是结构大小的一部分。
Point
的framework implementation只使用了两个属性:
private int x;
private int y;
Empty
实现为
[Browsable(false)]
public bool IsEmpty {
get {
return x == 0 && y == 0;
}
}
两个 int
字段占用 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
是一个 属性,不是一个字段。属性只是幕后的方法,因此它们不是结构大小的一部分。
Point
的framework implementation只使用了两个属性:
private int x;
private int y;
Empty
实现为
[Browsable(false)]
public bool IsEmpty {
get {
return x == 0 && y == 0;
}
}
两个 int
字段占用 8 个字节 - 一切正常。