尝试从Enum :: Parse的String中获取int值

时间:2011-05-20 11:32:52

标签: .net managed-c++

我正在使用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

我做错了什么? (与托管扩展有关,就像我上次遇到困难一样?)

1 个答案:

答案 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)));