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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章