8

我收到 CA1305 警告。

Microsoft.Globalization :由于“int.Parse(string)”的行为可能因当前用户的区域设置而异,因此将“_Default.CalculateImageButton_Click(object, ImageClickEventArgs)”中的此调用替换为对“int.Parse(string) 的调用, IFormatProvider)'。如果将向用户显示“int.Parse(string, IFormatProvider)”的结果,请将“CultureInfo.CurrentCulture”指定为“IFormatProvider”参数。否则,如果结果将被软件存储和访问,例如当它被持久化到磁盘或数据库时,请指定“CultureInfo.InvariantCulture”。

如果我在解析 Int32 时忽略指定区域性,究竟会出现什么问题?

4

2 回答 2

14

这意味着当您从数据文件或数据库记录中读取“1,234”,然后尝试通过 Parse 将其转换为 Int 时,您将在美国得到 1234,在德国得到 1。该警告提供了很好的建议 - 如果您正在与用户交互,请指定 CurrentCulture(感谢 Andrew!),如果您正在与文件系统或数据库(或任何!用户)交互,请使用 InvariantCulture

于 2009-06-12T02:35:09.923 回答
2

如果解析一个整数,它可能有千位分隔符,可以是“,”或“。” 取决于语言环境。

于 2009-06-12T02:36:18.207 回答