gpt4 book ai didi

c# - Int32.ToString() 是否特定于文化?

转载 作者:IT王子 更新时间:2023-10-29 03:43:49 25 4
gpt4 key购买 nike

我正在运行 ReSharper 的测试版,它会针对以下代码向我发出警告:

int id;
// ...
DoSomethingWith(id.ToString());

警告出现在 id.ToString() 调用上,它告诉我“明确指定字符串转换中的区域性”。我理解警告,并且知道如何修复它 - 只需将代码更改为更加笨拙的 id.ToString(CultureInfo.InvariantCulture)

但我的问题是:有必要吗?我的意思是,当您使用 DateTime(不同的文化有不同的日期格式)和 Double(不同的小数点字符).但是 Int32.ToString(),至少在 en-US 和不变文化中,根本不添加任何格式。没有逗号,没有小数点,没有美元符号,什么都没有。那么会因文化而异吗?

当您调用无参数 Int32.ToString() 时,是否有一些文化实际上添加某种格式?或者这是 ReSharper 测试版中的错误,并且此警告确实不适用于 Int32(在这种情况下我将提交 ReSharper 错误报告)?

最佳答案

操作系统允许更改数字的负号

Control panel -> 
Language and regional settings ->
Additional settings ->
Negative sign

因此,当前的文化可能已经覆盖了负号。在这种情况下,您需要遵守区域设置,这就是警告的原因。您还可以通过编程方式更改负号:

    CultureInfo culture = Thread.CurrentThread.CurrentCulture;
// Make a writable clone
culture = (CultureInfo) culture.Clone();
culture.NumberFormat.NegativeSign = "!";

关于c# - Int32.ToString() 是否特定于文化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8492449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com