如何从char值中检索Enum ?

本文关键字:检索 Enum char | 更新日期: 2023-09-27 18:14:53

我有以下enum

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

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

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

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

如何从char值中检索Enum ?

枚举值,虽然用char s定义,但实际上等于该字符的int表示。就好像你是这样定义它的:

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

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

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 。您只需要将其强制转换为enum:

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

我想我找到了一个解决方案:

   (MaritalStatus)Enum.ToObject(typeof(MaritalStatus), 'S')

它让我婚姻状态。单一的

枚举。ToObject(enumType, byte)是签名

从value中获取enum Name有多种方法。

string name =   ((MaritalStatus)'S').ToString();
string enumName =  Enum.GetName(typeof(MaritalStatus), 'S');
在c# 6.0中,你可以使用nameof

我能够通过将charValue更改为string来读取字符的enum值,然后读取第一个字符并将其转换为我的enum类型。

代码如下:

( Marital Status ) ( charValue.ToString ( ) [ 0 ] )