如何将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
};
};
如果您不使用数据在程序中别名的事实,那么您最初可以简单地添加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
字段用于标记联合的当前有效成员,那么该字段可能会被删除,因为每个实例的具体类型将很容易地确定相同的信息。