C# では、bool 型の 16 個の変数を含む複数の異なる構造体を作成しています。これらの構造体をいくつか用意し、他のデータ型と組み合わせてより複雑な構造体にします。長さ 2 バイトとして扱う必要があります。以下のコードでは、タイプ CtrlWord1 で作成された変数は、Pack 値が 0、1、2 のいずれで作成されたかに関係なく、Marshal.SizeOf を実行すると長さが 64 になります。
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct CtrlWord1
{
public bool a1;
public bool a2;
public bool a3;
public bool a4;
public bool a5;
public bool a6;
public bool a7;
public bool a8;
public bool b1;
public bool b2;
public bool b3;
public bool b4;
public bool c1;
public bool c2;
public bool c3;
public bool c4;
}