如何将c++结构体与Union转换为c#

本文关键字:Union 转换 结构体 c++ | 更新日期: 2023-09-27 18:03:14

我正试图将这段代码从c++转换为c#或CLI,但直到现在都不起作用,请任何人帮助我。

ref struct token_t
{
    TokenTypes_t TokenType;     // enum class
    string       TokenString;    
     typedef  union
    {
        Keyword_t  KeywordID;  // enum class
        char       CharVal;   
        Operator_t OprID;    // enum type
    }; 
};

如何将c++结构体与Union转换为c#

如果您不使用数据在程序中别名的事实,那么您最初可以简单地添加3个字段。

struct token_t
{
    TokenTypes_t TokenType;     // enum class
    string       TokenString;    
    Keyword_t  KeywordID;  // enum class
    char       CharVal;   
    Operator_t OprID;    // enum type
}

最终的翻译取决于最初对联合的需要。通常结果是一个抽象基类(对于这种情况)具有3个派生类型,每个派生类型包含原始联合的一个成员。如果TokenType字段用于标记联合的当前有效成员,那么该字段可能会被删除,因为每个实例的具体类型将很容易地确定相同的信息。