gpt4 book ai didi

c# - 为什么 NumberStyles.AllowThousands 在传递负数时会导致异常?

转载 作者:太空狗 更新时间:2023-10-29 21:27:16 25 4
gpt4 key购买 nike

我正在调用以下两行。第二行崩溃。:

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");

我做错了什么吗?这是一个已知的问题?是否有不涉及骇人听闻的字符串操作的可接受的解决方法?

编辑 我应该提到异常是 System.FormatException,“输入字符串的格式不正确。”

最佳答案

对于第二个示例,您还需要使用 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,

关于c# - 为什么 NumberStyles.AllowThousands 在传递负数时会导致异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31018133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com