C / C++ には「共用体」(union) というのがありますが、C# にはありません。
ですが、属性 StructLayout(LayoutKind.Explicit) と FieldOffset を使って実現は可能です。
MSDN にも解説があります。
以下にサンプルを示します。
using System;
using System.Runtime.InteropServices;
// C# 共用体のテスト
public class UnionTest
{
public static void Main()
{
var bytes = new TBytes();
bytes.Word = 0x12345678;
Console.WriteLine("{0:x}", bytes.Byte0); // 78
Console.WriteLine("{0:x}", bytes.Byte1); // 56
Console.WriteLine("{0:x}", bytes.Byte2); // 34
Console.WriteLine("{0:x}", bytes.Byte3); // 12
}
}
// 詳しい解説
// https://msdn.microsoft.com/ja-jp/library/acxa5b99.aspx
[StructLayout(LayoutKind.Explicit)]
public struct TBytes
{
[FieldOffset(0)]
public byte Byte0;
[FieldOffset(1)]
public byte Byte1;
[FieldOffset(2)]
public byte Byte2;
[FieldOffset(3)]
public byte Byte3;
[FieldOffset(0)]
public uint Word;
}