![](/img/trans.png)
[英]Will converting Char.GetNumericValue() to int destroy information?
[英]Why is char.GetNumericValue() giving the wrong result?
我有以下枚举
public enum Status
{
New = 'N',
Live = 'L',
Expired = 'E'
}
在收到 char 'N'
我想获得相关值(即Status.New
)
似乎Enum.Parse
不适用于char
,甚至char.toString()
,所以我想获取与 char 关联的数值
var myChar = 'N';
var myNumber = Char.GetNumericValue(myChar); // or char.GetNumericValue(myChar);
并且myNumber
的值为-1
,这是不正确的
到底是怎么回事?
Microsoft 文档说Char.GetNumericValue()
将指定的数字 Unicode 字符转换为双精度浮点数。
字符“N”不是数字,它是字母字符。
如果你想获得一个Status
枚举值,你可以使用:
Status status = (Status)myChar;
文档说GetNumericValue()
返回:“如果该字符表示数字,则 c 的数值;否则为 -1.0。”
'N' 不代表数字,因此它返回 -1。
char
可以隐式转换为数字:
int number = 'N';
或者,如果你想使用var
,你只需要一个明确的演员表。
另请注意,您的枚举值是int
s,而不是char
s。 它们被隐式转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.