为什么选择NumberStyles.AllowThousands在传递负数时会导致异常
本文关键字:异常 NumberStyles 选择 AllowThousands 为什么 | 更新日期: 2023-09-27 17:59:13
我调用以下两行。第二行崩溃。:
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");
我做错什么了吗?这是一个已知的问题吗?有没有一种可以接受的方法不涉及棘手的字符串操作?
edit我应该提到的异常是System.FormatException
,"输入字符串的格式不正确。"
对于第二个示例,由于在字符串中使用了NegativeSign
,因此也需要使用AllowLeadingSign
。
var b = long.Parse("-2,147,483,648",
NumberStyles.AllowThousands | NumberStyles.AllowLeadingSign);
当您使用long.Parse(string)
重载时,此方法使用NumberStyles.Integer
复合样式,该样式已包含AllowLeadingSign
本身。
来自参考来源;
Integer = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign,