在C ++ / CLI中枚举类型上的ToString()等效

时间:2009-09-09 13:02:22

标签: c++-cli

在C#中,你可以声明一个枚举,一旦你在变量上设置了它的值,就调用ToString,得到一个enum值的字符串表示。

如何使用托管枚举在C ++ / CLI中执行此操作?

3 个答案:

答案 0 :(得分:4)

虽然其他答案并不正确,但我发现自己遇到了同样的问题。在我的例子中,我已经声明了一个标准的C ++枚举,并且忘记了使用CLI语法(即使我在公共属性中公开它而没有编译器警告!)。

C ++ / CLI枚举的正确语法是(注意'class'一词):

public enum class SomeEnum {
    Value1,
    Value2
}

注意:你也可以使用'struct'而不是'class'。

您还需要返回代码并更改任何分配(编译器会很高兴地向您显示错误):

SomeEnum value = Value1;

到此:

SomeEnum value = SomeEnum::Value1;

现在您将发现'ToString()'可以按照您的预期运行。

答案 1 :(得分:3)

语法不一样吗?

MyEnum enumValue = MyEnum::Enum1;
Console::WriteLine(enumValue.ToString());

Google Books

中查看“Pro Visual C ++ / CLI和.NET 3.5平台”一书的这一页
  

“枚举的ToString()方法将枚举名称打印为字符串”

答案 2 :(得分:1)

ToString()应该返回枚举值的名称。此外,如果使用[Flags]属性修饰托管枚举,则例如Colour::Red | Colour::Blue将ToString()设置为“红色,蓝色”。 (这是来自Marcus Heege的书“Expert Visual C ++ / CLI:.NET for Visual C ++ Programmers”,而不是自己尝试过)