簡體   English   中英

為什么 char.GetNumericValue() 給出錯誤的結果?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM