Это не просто.Как переменные в методе, они почти такие же, как int
, поэтому 4 байта;внутри массива они однобайтовые.Как поле ... Мне нужно проверить; I думаю, заполнение означает, что они могут рассматриваться как 4-байтовые. A struct
с sizeof
должно показывать ...
struct Foo {
byte a, b, c;
}
static class Program {
unsafe static void Main() {
int i = sizeof(Foo); // <==== i=3
}
}
Здесь i
показывает 3, поэтому они являются однобайтовыми полями, но (см. комментарии codymanix) могут потребоваться дополнительные отступы, когда задействованы другие типы - например:
struct Foo
{
byte a, b, c;
int d;
}
равно 8 байтов, из-за необходимости d
для выравнивания.Веселье, веселье, веселье.