我有以下枚举
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)
枚举值虽然用chars 定义,但实际上等于int该char 的表示形式.就好像你将它定义如下:
public enum MaritalStatus
{
Married = 77,
Widow = 87,
Widower = 82,
Single=83
}
Run Code Online (Sandbox Code Playgroud)
转换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
Run Code Online (Sandbox Code Playgroud)
稍微玩了一下并将其放入一个内衬后,我发现即使转换为a int也不需要.你只需要演绎枚举:
MaritalStatus status = (MaritalStatus)'M'; // MaritalStatus.Married
Run Code Online (Sandbox Code Playgroud)
我想找到了一个解决方案:
(MaritalStatus)Enum.ToObject(typeof(MaritalStatus), 'S')
Run Code Online (Sandbox Code Playgroud)
它让我了解MaritalStatus.Single
Enum.ToObject(enumType, byte) 是签名。