【问题标题】:How to Cast string to be the Enum-Tag value in C# ( to be The Enum Name )? [duplicate]如何将字符串转换为 C# 中的 Enum-Tag 值(成为 Enum Name )? [复制]
【发布时间】:2011-01-24 13:56:35
【问题描述】:

可能重复:
Cast a String to an Enum Tag in C#

如何转换名称为现有 enum-TAG 的字符串(名称为 Enum Title) 成为枚举类型

不成为枚举列出的变量值之一,
但是要成为 Enum 类型的 Enum-Tag 名称?

例如,我可能有

Enum MyEnum { A,B,C,D };

然后

String a = "MyEnum";

【问题讨论】:

  • 这个问题今天似乎很流行——这是怎么回事?
  • 我想你想把一个简单的类型名变成一个 System.Type?如果没有更多可用信息而不仅仅是简单的名称,这很难可靠。您知道该类型所在的程序集吗?您是否有程序集限定名称或至少具有完全限定类型名称?无论如何,这应该让你开始:从全名创建 C# 类型。 stackoverflow.com/questions/1392763/…
  • 这个关闭太仓促了;我相信 OP 想要的东西与“重复”中的不同。

标签: c# enums


【解决方案1】:

您需要使用 Enum.Parse 将其解析为 Enum:

myEnum result = (myEnum)Enum.Parse(typeof(myEnum), stringToConvert);

这里有几个元素需要考虑。首先,Enum.Parse 采用目标 Enum 的 type。其次是它只返回类型 object 所以你需要手动将其转换为正确的枚举类型。

【讨论】:

    【解决方案2】:
    MyEnum value = (MyEnum)Enum.Parse(typeof(MyEnum), "myname");
    

    【讨论】:

      【解决方案3】:
      Enum e = (Enum)Enum.Parse(typeof(Enum), "A", true);
      

      应该这样做

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-04
        • 2013-07-18
        • 1970-01-01
        • 1970-01-01
        • 2012-05-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多