я написал код и получить странное result- целое я в 8:Почему sizeof (Point) равен 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 возвращает 8, но не 9?
Благодаря
Да, вы пишите! i попытался сделать: struct SomeVal { public Int32 x; public Int32 y; public bool z; } и размер 12! самый маленький блок для переменной - 4 байта? – zzfima
@zzfima Нет ... Попробуйте 'struct Test {bool Value; } '1 байт. То, что вы видите, является дополнительным дополнением, вызванным тем, что 'SomeVal' должен быть выровнен на границе 4 байта (поскольку он содержит' Int32'), поэтому его размер должен быть кратным 4. – xanatos
Обратите внимание, что требования к заполнению зависят от платформы и CLR не имеет одинаковых правил в отношении порядка членов, так как C и C++ имеют, иногда выделяя большую часть необходимого дополнения. – Joey