> For the complete documentation index, see [llms.txt](https://andreyakinshin.gitbook.io/problembookdotnet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://andreyakinshin.gitbook.io/problembookdotnet/ru/valuetypes/structlayout-s.md).

# «StructLayout» (Решение)

## Ответ

```
8
8
```

## Объяснение

Если явно не задано, то CLR автоматически управляет размещением данных в структуре. В данном случае происходит выравнивание полей по границе 4 байт, в результате чего общий размер структуры составит 8 байт. Пользователь может явно управлять выравниванием. Например, если пометить `Foo` атрибутом `StructLayout` следующим образом:

```csharp
[StructLayout(LayoutKind.Sequential, Pack=1)]
public struct Foo
```

то мы заставим CLR размещать поля последовательно, выравнивания их по границе 1 байта, в результате чего получим:

```csharp
Console.WriteLine(Marshal.SizeOf(typeof(Foo))); // Displays '5'
```

[Задача](/problembookdotnet/ru/valuetypes/structlayout-p.md)
