gpt4 book ai didi

C# 将字符串 "0"解析为整数

转载 作者:太空狗 更新时间:2023-10-29 19:49:33 24 4
gpt4 key购买 nike

我有一台新笔记本电脑在工作,本周早些时候可以运行的代码今天不能运行。

之前工作的代码被简化了:

while (dr.Read())
{
int i = int.Parse(dr.GetString(1))
}

现在当数据库值为 0 时它会失败。有时,但不可靠,这会起作用:

while (dr.Read())
{
int i = Convert.ToInt32(dr["FieldName"]))
}

我是不是漏掉了什么蠢东西?

奇怪的是,ReSharper 也有大量奇怪的错误,这些错误消息与我在上面的代码中收到的错误消息相同:“输入字符串的格式不正确。” (甚至在我加载项目之前就开始了。)

有什么想法吗?有人有任何SP问题吗?当我拿到机器时,我确实尝试确保我所有的 SP 都是最新的。

编辑:我了解如何使用 Try.Parse 和错误处理。这里的代码被简化了。我正在从数据库表中读取测试用例。此列只有 0、1 和 2 个值。我已经确认了。我将其分解,将数据库字段放入字符串变量 s 中,然后尝试使用 int.Parse(s)。该代码在本周早些时候运行,数据库没有改变。唯一改变的是我的环境。

为了完全简化问题,这行代码抛出一个异常(“输入字符串的格式不正确”):

 int.Parse("0");

编辑:感谢大家帮我解决这个问题!解决方案是强制重置我的语言设置。

最佳答案

一个可能的 explanation :

Basically, the problem was the sPositiveSign value under HKEY_CURRENT_USER\Control Panel\International being set to 0, which means the positive sign is '0'. Thus, while parsing the "positive sign 0" is being cut off and then the rest of the string ("") is parsed as a number, which doesn't work of course. This also explains why int.Parse("00") wasn't a problem. Although you can't set the positive sign to '0' through the Control Panel, it's still possible to do it through the registry, causing problems. No idea how the computer of the user in the post ended up with this wrong setting...

更好的是,你的机器上的输出是什么:

Console.WriteLine(System.Globalization.NumberFormatInfo.GetInstance(null).PositiveSign);

我敢打赌,当我的打印出 + 符号时,您的打印出 0...。

我建议检查您的 Control Panel > Regional and Language Options 设置...如果它们看起来正常,请尝试将它们更改为其他语言而不是返回到您正在使用的任何语言(我假设英语)。

关于C# 将字符串 "0"解析为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/691199/

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