C# no soporta de forma nativa la noción de C/C++ de los sindicatos. Sin embargo, puede utilizar los atributos StructLayout (LayoutKind.Explicit) y FieldOffset para crear una funcionalidad equivalente. Tenga en cuenta que esto funciona solo para tipos primitivos como int y float.
using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Explicit)]
struct byte_array
{
[FieldOffset(0)]
public byte byte1;
[FieldOffset(1)]
public byte byte2;
[FieldOffset(2)]
public byte byte3;
[FieldOffset(3)]
public byte byte4;
[FieldOffset(0)]
public short int1;
[FieldOffset(2)]
public short int2;
}
En realidad, aparte de los tipos primitivos nativos, esto también funciona para los valores creados por el usuario, definidos como estructuras. Vea aquí: http://stackoverflow.com/documentation/c%23/5626/how-to-use-c-sharp-structs-to-create-a-union-type-similar-to-c-unions#t = 201608241340099784116 –