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

C++ cli 与C+;中枚举类型上的ToString()等效+/CLI,c++-cli,C++ Cli,在C#中,您可以声明一个枚举,一旦设置了它的值,就可以调用变量上的字符串,并获得枚举值的字符串表示形式 如何在C++/CLI中使用托管枚举实现这一点?语法是否相同 MyEnum enumValue = MyEnum::Enum1; Console::WriteLine(enumValue.ToString()); 请参阅中“Pro Visual C++/CLI和.NET 3.5平台”一书的这一页 “枚举的ToString()方法将枚举名称打印为字符串” ToString()应返回枚举值的名称。

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


如何在C++/CLI中使用托管枚举实现这一点?

语法是否相同

MyEnum enumValue = MyEnum::Enum1;
Console::WriteLine(enumValue.ToString());
请参阅中“Pro Visual C++/CLI和.NET 3.5平台”一书的这一页

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


ToString()应返回枚举值的名称。此外,如果使用[Flags]属性修饰托管枚举,则eg
color::Red | color::Blue
将ToString()改为“Red,Blue”。(这是从Marcus Heege的著作《专家Visual C++ +CLI:.NET Visual C++程序员》中获得的,不是自己尝试的)

< p>而其他答案不正确,我发现自己也遇到了同样的问题。在我的例子中,我声明了一个标准的C++枚举,并且忘记使用CLI语法(即使我在公共属性中没有编译器警告也暴露了它)。 C++/CLI枚举的正确语法是(注意“class”一词):

注意:您也可以使用“struct”而不是“class”

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

SomeEnum value = Value1;
为此:

SomeEnum value = SomeEnum::Value1;
现在,您将发现“ToString()”的工作方式与您所期望的一样。

我得到了“左侧的。ToString()必须具有class/struct/union”
SomeEnum value = SomeEnum::Value1;