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


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

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

在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;
}



猜你喜欢

转载自blog.csdn.net/lc_cc/article/details/52927535
今日推荐