我打电话给以下两行。第二行崩溃了。:
var a = long.Parse("2147483648");
var b = long.Parse("-2147483648");
但是,如果我将值修改为没有','字符并删除NumberStyles枚举,则它可以工作。 e.g。
System.FormatException
我做错了吗?这是一个已知的问题?是否存在可接受的解决方法,不涉及hacky字符串操作?
编辑我应该提到异常是<aside>
,“输入字符串的格式不正确。”
答案 0 :(得分:7)
对于第二个示例,您需要使用AllowLeadingSign
,因为您在字符串中使用NegativeSign
。
var b = long.Parse("-2,147,483,648",
NumberStyles.AllowThousands | NumberStyles.AllowLeadingSign);
当您使用long.Parse(string)
overload时,此方法使用NumberStyles.Integer
复合样式,已包含AllowLeadingSign
本身。
Integer = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign,