我有一个循环,我在其中调用ToString()
int 变量i
。
for (int i = 1; i <= n; i++)
{
@Html.ActionLink(@i.ToString(), "Index")
}
Resharper 告诉我,我应该:
明确指定字符串转换中的文化。
为什么是这样?
有多少种方法可以将 int 转换为字符串?
我本来以为只有1。
有不同的符号分组方法,例如 1000;1 000 和 1 000。此外,不同国家的数字使用不同的数字 中文数字
您可以在控制面板 -> 区域和语言 -> 格式 -> 附加设置 -> 标准数字中看到不同的数字。(赢 7)
通常,始终明确指定是要使用当前文化还是要处理的数据是文化不变的,这是一个很好的做法。问题是,如果您处理的数据仅由您的软件处理,而不以任何方式呈现给用户(例如数据库标识符),那么如果不同机器上的数据不同,您可能会遇到问题。
例如,数据库标识符可能在具有某种文化的机器上被序列化,而在具有不同文化的机器上被反序列化,在这种情况下它可能会有所不同!如果您明确指定您正在处理的字符串是文化不变的,那么无论机器上设置了什么文化,它都将始终相同。
您可以在 MSDN 代码分析文档中阅读有关此主题的更多信息: