我有以下列举

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

在一个函数中,我有exp:'S',我需要有MaritalStatus.Single
如何从字符值获取枚举?
对于字符串,我找到了这个解决方案,但对于char却有异常。
YourEnum foo = (YourEnum) Enum.Parse(typeof(YourEnum), yourString);

最佳答案

枚举值,尽管用chars定义,实际上等于该字符的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

09-18 15:09