如何在C#中模拟C++的联合(union)


union TokenValue
{
    char _cval;
    int _ival;
    double _dval;
};

union TokenValue中数据占用内存的情况如下图所示:

如何在C#中模拟C++的联合(union)_第1张图片

在C#中使用StructLayoutAttribute、LayoutKind以及FieldOffsetAttribute。使用它们的时候必须引用System.Runtime.InteropServices空间。


[StructLayout(LayoutKind.Explicit, Size=8)]
struct TokenValue
{
    [FieldOffset(0)]
    public char _cval;

    [FieldOffset(0)]
    public int _ival;

    [FieldOffset(0)]
    public double _dval;
}



你可能感兴趣的:(C++,C#)