我有以下列举
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
s定义,实际上等于该字符的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