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

Daf*_*ins 2 c++-cli

在C#中,您可以声明一个枚举,一旦设置了它的值,就在变量上调用ToString并获得该枚举值的字符串表示形式。

您如何在C ++ / CLI中使用托管枚举来做到这一点?

ced*_*rou 5

语法不是一样吗?

MyEnum enumValue = MyEnum::Enum1;
Console::WriteLine(enumValue.ToString());
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我得到“.ToString() 的左侧必须有类/结构/联合” (2认同)

cmr*_*rgo 5

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

C ++ / CLI枚举的正确语法是(请注意单词“ class”):

public enum class SomeEnum {
    Value1,
    Value2
}
Run Code Online (Sandbox Code Playgroud)

注意:您也可以使用“结构”而不是“类”。

您还需要重新检查代码并更改所有分配(编译器会很乐意向您显示错误):

SomeEnum value = Value1;
Run Code Online (Sandbox Code Playgroud)

对此:

SomeEnum value = SomeEnum::Value1;
Run Code Online (Sandbox Code Playgroud)

现在,您会发现'ToString()'可以按预期工作。