我有以下枚举
public enum Status
{
New = 'N',
Live = 'L',
Expired = 'E'
}
在收到字符 'N'
后,我想获得相关值(即 Status.New
)
似乎 Enum.Parse
不适用于 char
,甚至 char.toString()
,因此我想获取与字符关联的数值
var myChar = 'N';
var myNumber = Char.GetNumericValue(myChar); // or char.GetNumericValue(myChar);
而myNumber
的值为-1
,不正确
这是怎么回事?
答案 0 :(得分:3)
Microsoft documentation 表示 Char.GetNumericValue()
将指定的数字 Unicode 字符转换为双精度浮点数。
字符“N”不是数字,而是字母字符。
如果你想获得一个 Status
枚举值,你可以使用:
Status status = (Status)myChar;
答案 1 :(得分:2)
documentation 表示 GetNumericValue()
返回:“c 的数值如果该字符表示数字;否则,-1.0。”
'N' 不代表数字,因此返回 -1。
char
可以隐式转换为数字:
int number = 'N';
或者,如果您想使用 var
,您只需要显式转换。
另请注意,您的枚举值是 int
,而不是 char
。它们被隐式转换。