2015-06-24 71 views
6

我打給以下兩行。第二行:崩潰爲什麼NumberStyles.AllowThousands在傳遞負數時會導致異常?

var a = long.Parse("2,147,483,648", NumberStyles.AllowThousands); 
var b = long.Parse("-2,147,483,648", NumberStyles.AllowThousands); 

但是,如果我修改值沒有「」字符,並刪除的NumberStyles枚舉它的工作原理。例如

var a = long.Parse("2147483648"); 
var b = long.Parse("-2147483648"); 

我做錯了什麼?這是一個已知的問題?有沒有可接受的解決方法,不涉及hacky字符串操作?

編輯我應該提到的例外是System.FormatException,「輸入字符串的格式不正確。」

+1

什麼是例外? –

回答

7

對於第二個示例,您需要使用AllowLeadingSign以及在字符串中使用NegativeSign

var b = long.Parse("-2,147,483,648", 
        NumberStyles.AllowThousands | NumberStyles.AllowLeadingSign); 

當您使用long.Parse(string) overload,此方法使用NumberStyles.Integer具有已經包括AllowLeadingSign本身的複合風格。

reference source;

Integer = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign, 
相關問題