是否有任何.NET文化以不同的方式处理整数的规范表示?

bil*_*lpg 5 .net c# parsing

整数的规范表示形式为ASCII十进制数字字符序列,仅当数字为负数时才带前缀" - ".除了表示的数字为零外,没有初始值为"0".没有其他字符,包括逗号,货币符号,空格,单位,"+",小数点等.

是否有任何.NET文化,当给定包含整数的规范表示的字符串时,int.TryParse将向不变文化返回不同的值?

如果没有,.NET是否保证将来可能添加的文化将继续以这种方式运行?

或者换句话说......如果我只关心这种输入,我是否需要在调用int.TryParse时指定不变文化?

Dir*_*irk 3

根据文化的不同,即使是负号也有不同的选择。如果你做一个

var numbers = from c in CultureInfo.GetCultures(CultureTypes.AllCultures)
              group c by c.NumberFormat.NumberNegativePattern into g
              select g;
Run Code Online (Sandbox Code Playgroud)

然后检查numbers您会发现某些文化对负号使用不同的选项,例如文化lolo-LA


根据经验,CultureInfo.InvariantCulture除了向用户显示之外,我将其用于所有目的。