C# 在字符串转换中显式指定区域性

C# 在字符串转换中显式指定区域性,c#,c#-4.0,resharper,C#,C# 4.0,Resharper,我有一个循环,在这个循环中,我对int变量I调用ToString() for (int i = 1; i <= n; i++) { @Html.ActionLink(@i.ToString(), "Index") } 对于(int i=1;i有不同的符号分组方法,如1000;1000和1000。 此外,不同国家的数字使用不同的数字 您可以在控制面板->区域和语言->格式->附加设置->标准数字中看到不同的数字。(Win 7)通常,最好始终明确指定是要使用当前区域性还是要处理的数

我有一个循环,在这个循环中,我对int变量
I
调用
ToString()

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

对于(int i=1;i有不同的符号分组方法,如1000;1000和1000。
此外,不同国家的数字使用不同的数字


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

通常,最好始终明确指定是要使用当前区域性还是要处理的数据是区域性不变的。问题在于,如果您处理的数据仅由软件处理,而没有以任何方式呈现给用户(例如数据库标识符),则如果不同计算机上的数据不同,则可能会遇到问题

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

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


1000000可写入1000 000。可能重复的So表示其他重载使用当前区域性So,如果Thread.CurrentCulture设置正确,转换将按预期进行。如果有良好的i18n/l10n测试,则可能需要禁用这些警告之一。