c# - 如何从 char 值中检索 Enum?

标签 c# parsing enums char

我有以下枚举

public enum MaritalStatus
{
    Married = 'M',
    Widow = 'W',
    Widower = 'R',
    Single='S'
}

在一个函数中,我有 exp: 'S' ,我需要有 MaritalStatus.Single

如何从字符值中获取枚举值? 对于字符串,我找到了这个解决方案,但它对 Char 有异常(exception)。

YourEnum foo = (YourEnum) Enum.Parse(typeof(YourEnum), yourString);

最佳答案

虽然用 char 定义的枚举值实际上等于该 char 的 int 表示。就好像您将其定义如下:

public enum MaritalStatus
{
    Married = 77,
    Widow = 87,
    Widower = 82,
    Single=83
} 

char转换为int,然后赋值给枚举:

int m = 'M'; // char of `M` equals to 77
MaritalStatus status = (MaritalStatus)m;  

Console.WriteLine(status == MaritalStatus.Married); // True
Console.WriteLine(status == MaritalStatus.Single); // False

在尝试了一下并将其放入单行后,我发现甚至不需要转换为 int。您只需要转换为枚举:

MaritalStatus status = (MaritalStatus)'M'; // MaritalStatus.Married

关于c# - 如何从 char 值中检索 Enum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40255376/

相关文章:

c# - 使用 C# 的系统默认代理

java - 如何使用 JavaCC/JJTree 来存储 token ?

带有枚举数组的 C# 反射

c# 检查枚举是否包含在选项中

c# - 将 PHP HMAC SHA256 转换为 C#

c# - Entity Framework 迁移 - Alter Table 语句与外键约束冲突

parsing - HTML Agility Pack xPath问题

parsing - 英语有正式的语法吗?

c# - 从枚举属性获取枚举

c# - vsto + 无法从 RTF 电子邮件中获取附件的文件名