在C#中,你可以声明一个枚举,一旦你在变量上设置了它的值,就调用ToString,得到一个enum值的字符串表示。
如何使用托管枚举在C ++ / CLI中执行此操作?
答案 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());
中查看“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”,而不是自己尝试过)