如何从C#中的字符串中获取枚举值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我有一个枚举:

public enum baseKey : uint
{  
    HKEY_CLASSES_ROOT = 0x80000000,
    HKEY_CURRENT_USER = 0x80000001,
    HKEY_LOCAL_MACHINE = 0x80000002,
    HKEY_USERS = 0x80000003,
    HKEY_CURRENT_CONFIG = 0x80000005
}

给定字符串HKEY_LOCAL_MACHINE,我怎么能得到一个0x80000002基于枚举的值?

提问于
用户回答回答于
baseKey choice;
if (Enum.TryParse("HKEY_LOCAL_MACHINE", out choice)) {
     uint value = (uint)choice;

     // `value` is what you're looking for

} else { /* error: the string was not an enum member */ }

在.NET 4.5之前,你必须执行以下操作,这更容易出错,并在传递无效字符串时引发异常:

(uint)Enum.Parse(typeof(baseKey), "HKEY_LOCAL_MACHINE")
用户回答回答于

使用Enum.TryParse不需要异常处理:

baseKey e;

if ( Enum.TryParse(s, out e) )
{
 ...
}

扫码关注云+社区