8

我有一个循环,我在其中调用ToString()int 变量i

for (int i = 1; i <= n; i++)
{
    @Html.ActionLink(@i.ToString(), "Index")
}

Resharper 告诉我,我应该:

明确指定字符串转换中的文化。

为什么是这样?

有多少种方法可以将 int 转换为字符串?

我本来以为只有1。

4

2 回答 2

7

有不同的符号分组方法,例如 1000;1 000 和 1 000。此外,不同国家的数字使用不同的数字 中文数字

您可以在控制面板 -> 区域和语言 -> 格式 -> 附加设置 -> 标准数字中看到不同的数字。(赢 7)

于 2012-09-20T10:39:52.753 回答
1

通常,始终明确指定是要使用当前文化还是要处理的数据是文化不变的,这是一个很好的做法。问题是,如果您处理的数据仅由您的软件处理,而不以任何方式呈现给用户(例如数据库标识符),那么如果不同机器上的数据不同,您可能会遇到问题。

例如,数据库标识符可能在具有某种文化的机器上被序列化,而在具有不同文化的机器上被反序列化,在这种情况下它可能会有所不同!如果您明确指定您正在处理的字符串是文化不变的,那么无论机器上设置了什么文化,它都将始终相同。

您可以在 MSDN 代码分析文档中阅读有关此主题的更多信息:

CA1305:指定 IFormatProvider

于 2012-09-21T08:19:08.617 回答