Tag: 文化信息

是Int32.ToString()文化特定?

我正在运行ReSharper的testing版本,它给我警告以下代码: int id; // … DoSomethingWith(id.ToString()); 警告是在id.ToString()调用,它告诉我“明确指定string转换文化”。 我理解这个警告,并且我知道如何解决它 – 只需将代码更改为非常笨拙的id.ToString(CultureInfo.InvariantCulture) 。 但我的问题是:这是必要的吗? 我的意思是,当你使用DateTime (不同的文化有不同的date格式)和Double (不同的字符用于小数点)时,指定文化是很重要的。 但是Int32.ToString() ,至less在en-US和不变的文化中,根本不会添加任何格式。 没有逗号,没有小数点,没有美元符号,什么都没有。 那么文化会有什么不同呢? 当你调用无参数的Int32.ToString()时,是否有一些文化实际上添加了某种格式? 或者这是ReSharpertesting版中的一个错误,这个警告真的不适用于Int32 (在这种情况下,我将提交一个ReSharper错误报告)?

无论文化如何,查找十进制值的小数位数

我想知道是否有一个简洁和准确的方法来拉出十进制数的小数位数(作为一个整数),这将是安全使用跨不同的文化信息? 例如: 19.0应该返回1, 27.5999应该返回4, 19.12应该返回2, 等等 我写了一个查询,做一个string拆分在一段时间来发现小数位: int priceDecimalPlaces = price.ToString().Split('.').Count() > 1 ? price.ToString().Split('.').ToList().ElementAt(1).Length : 0; 但是,对我来说,这只会在使用'。'的地区才起作用。 作为小数分隔符,因此在不同系统中非常脆弱。

在.NET中CultureInfo的CurrentCulture和CurrentUICulture属性有什么区别?

在.NET中, System.Globalization命名空间中有CultureInfo类。 它有两个相似的属性,都返回CultureInfotypes的值: CurrentCulture和CurrentUICulture 。 他们有什么区别? 我应该使用哪一个,为什么?

有没有为整个应用程序设置文化的方法? 所有当前线程和新线程?

有没有为整个应用程序设置文化的方法? 所有当前线程和新线程? 我们有存储在数据库中的文化的名称,当我们的应用程序启动时,我们做 CultureInfo ci = new CultureInfo(theCultureString); Thread.CurrentThread.CurrentCulture = ci; Thread.CurrentThread.CurrentUICulture = ci; 但是,当然,当我们想要在新线程中做某些事情时,这会“失去”。 有没有为整个应用程序设置CurrentCulture和CurrentUICulture的方法? 所以新线程也能获得这种文化? 或者,当一个新的线程被创build,我可以连接到一些事件触发?

如何在C#中使用本地化

我似乎无法使本地化工作。 我有一个类库。 现在我想在那里创建resx文件,并返回一些基于线程文化的值。 我怎样才能做到这一点?