我正在使用C ++和.NET 1.1,需要将字符串值解析为枚举器中相应的int值。
我有一个枚举器
__value static enum myEnum {
VALUE1,
VALUE2,
VALUE3
};
我试图按照
的方式做点什么int value = (int)Enum::Parse(__typeof(myEnum), stringToParse);
或
int value = (myEnum)Enum::Parse(__typeof(myEnum), stringToParse);
当然Enum::Parse
会返回Object*
,但我无法弄清楚如何将该对象投射到int
。
我做错了什么? (与托管扩展有关,就像我上次遇到困难一样?)
答案 0 :(得分:1)
它应该只是一个unbox - 虽然你可能想要取消装入枚举然后再转换。在C#中,类似于
int value = (int)(myEnum)Enum.Parse(typeof(myEnum), stringToParse);
不确定在C ++中看起来是什么样的。
在C#中,以下也有效,但我不能保证正式:
int value = (int)Enum.Parse(typeof(myEnum), stringToParse);
请注意,上面我假设myEnum
使用Int32
作为基础类型。如果不这种情况,那么您需要将其调整为unbox作为正确的基础类型首先。
通过反射器运行它,我得到:
Int32 __gc* value = *static_cast<__box Int32*>(
*static_cast<__box myEnum*>(Enum::Parse(__typeof(myEnum), stringToParse)));