C# 为什么char.GetNumericValue()给出了错误的结果?
我有下面的枚举C# 为什么char.GetNumericValue()给出了错误的结果?,c#,enums,char,C#,Enums,Char,我有下面的枚举 public enum Status { New = 'N', Live = 'L', Expired = 'E' } 在收到字符'N'后,我希望获得相关值(即状态。新建) 似乎Enum.Parse不能与char一起使用,甚至不能与char.toString()一起使用,因此我想获取与char相关的数值 var myChar = 'N'; var myNumber = Char.GetNumericValue(myChar); // or char.Ge
public enum Status
{
New = 'N',
Live = 'L',
Expired = 'E'
}
在收到字符'N'
后,我希望获得相关值(即状态。新建)
似乎Enum.Parse
不能与char
一起使用,甚至不能与char.toString()
一起使用,因此我想获取与char相关的数值
var myChar = 'N';
var myNumber = Char.GetNumericValue(myChar); // or char.GetNumericValue(myChar);
而myNumber
的值是-1
,这是不正确的
发生了什么事?上面说Char.GetNumericValue()
将指定的数字Unicode字符转换为双精度浮点数
字符“N”不是数字,而是字母字符
如果要获取状态
枚举值,可以使用:
Status status = (Status)myChar;
sayGetNumericValue()
返回:“如果该字符表示一个数字,则为c的数值;否则为-1.0。”
“N”不表示数字,因此它返回-1
char
可以隐式转换为数字:
int number = 'N';
或者,如果要使用var
,只需显式转换即可
还要注意,枚举值是int
s,而不是char
s。它们被隐式转换