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;
say
GetNumericValue()
返回:“如果该字符表示一个数字,则为c的数值;否则为-1.0。”
“N”不表示数字,因此它返回-1

char
可以隐式转换为数字:

int number = 'N';
或者,如果要使用
var
,只需显式转换即可

还要注意,枚举值是
int
s,而不是
char
s。它们被隐式转换