![](/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.