这个问题已经在这里有了答案:




12年前关闭。






是否有与C union typedef等效的C#?
C#中的以下等效项是什么?

typedef union byte_array
{
    struct{byte byte1; byte byte2; byte byte3; byte byte4;};
    struct{int int1; int int2;};
};byte_array

最佳答案

C#本身不支持 union 的C/C++概念。但是,您可以使用StructLayout(LayoutKind.Explicit)和FieldOffset属性来创建等效的功能。
请注意,这仅适用于基本类型(例如int和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;
}

关于C#等同于C union ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/852442/

10-12 14:51