C# 为类设置特定文化

标签 c# methods globalization culture

我有一个 C# 类,它有各种方法。我想用 en-US文化在这个类的所有方法中。我可以为特定类(class)设置文化吗?

背景:我有一个 List<object>和一些 object是数字,有些是字符串。 我想要所有使用美国文化书写的数字,但我不知道哪些项目是数字。 object类(class)的ToString()似乎不接受文化争论。

最佳答案

类是一种数据结构,而本地化的字符串格式是一种行为。从代码/编译器的角度来看,这两件事彼此无关,将它设置在“每个类”的基础上是没有意义的。这个问题属于使用类的代码范围,或者类本身内部的代码。

全局文化信息按线程设置(使用 Thread.CurrentThread.CurrentCultureCultureInfo.CurrentCulture)。您可以做的一件事是将类的每个方法包装在文化集/恢复中。由于线程文化在所有方面都是一个全局变量,如果您的类在其他地方调用过,这可能会出现问题。

如果您想为您的类指定一种文化,最好的方法是只使用该文化的一个实例作为类属性,然后使用大多数字符串/数字格式的特定于文化的重载功能。

class MyClass {
    public CultureInfo Culture { get; set; }

    public void GetSomeString() {
        return new Int32().ToString(Culture);
    }
}

编辑:仔细看看你的问题,我认为你想做的是这样的:

var lastCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
try {
   // loop over list here
}
finally {
    Thread.CurrentThread.CurrentCulture = lastCulture;
}

关于C# 为类设置特定文化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2319267/

相关文章:

java - 用Java写一个mode方法找到数组中出现频率最高的元素

c# - 在 Windows Server 2012 上安装更多文化

asp.net-mvc-3 - ASP.Net MVC 3 中的全局化

c# - 计算对数百分比

c# - 具有自定义和默认先决条件的 Clickonce WPF 应用程序

c# - 等待网络 C# 控制台应用程序完全启动

.net - .NET 3.5 中的 CultureInfo 类支持哪些文化?

c# - 转换为正确的 XML 格式

javascript - javascript中可以调用子方法吗?

Java:如何从第二个方法中获取变量以在第三个方法中工作?