Нет из коробки Union
тип данных в C#
Однако вы можете подделать его с помощью struct
и атрибут FieldOffset
, наверное. Вы можете сделать это из-за необходимости взаимодействия, также вы иногда видите, что он используется для быстрого преобразования типа без приведения . Однако будьте осторожны, это считается чрезвычайно хакерским .
[StructLayout(LayoutKind.Explicit)]
struct SomeType
{
[FieldOffset(0)] public int Myint;
[FieldOffset(0)] public byte Byte1;
[FieldOffset(1)] public byte Byte2;
[FieldOffset(2)] public byte Byte3;
[FieldOffset(3)] public byte Byte4;
}
Использование
var someType = new SomeType();
Console.WriteLine(someType.Myint);
someType.Byte1 = 2;
Console.WriteLine(someType.Myint);
someType.Byte2 = 4;
Console.WriteLine(someType.Myint);
Вывод
0
2
1026
Примечание : я бы серьезно подумал об использовании более общих языковых функций в C#, переосмыслил бы проблему и не использовал этот прием.