如何从char值中检索Enum?

Sar*_*a N 6 c# enums parsing

我有以下枚举

public enum MaritalStatus
{
    Married = 'M',
    Widow = 'W',
    Widower = 'R',
    Single='S'
}
Run Code Online (Sandbox Code Playgroud)

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

如何从字符值中获取枚举?对于字符串,我找到了这个解决方案,但它对Char来说是个例外.

YourEnum foo = (YourEnum) Enum.Parse(typeof(YourEnum), yourString);
Run Code Online (Sandbox Code Playgroud)

Gil*_*een 7

枚举值虽然用chars 定义,但实际上等于int该char 的表示形式.就好像你将它定义如下:

public enum MaritalStatus
{
    Married = 77,
    Widow = 87,
    Widower = 82,
    Single=83
} 
Run Code Online (Sandbox Code Playgroud)

转换charint然后分配给枚举:

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
Run Code Online (Sandbox Code Playgroud)

稍微玩了一下并将其放入一个内衬后,我发现即使转换为a int也不需要.你只需要演绎枚举:

MaritalStatus status = (MaritalStatus)'M'; // MaritalStatus.Married
Run Code Online (Sandbox Code Playgroud)


Sar*_*a N 5

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

   (MaritalStatus)Enum.ToObject(typeof(MaritalStatus), 'S')
Run Code Online (Sandbox Code Playgroud)

它让我了解MaritalStatus.Single

Enum.ToObject(enumType, byte) 是签名。