C#为课堂设定特定的文化

Cha*_*hau 5 c# globalization methods culture

我有一个C#类有各种方法.我想en-US在这个类的所有方法中使用culture.我可以为特定班级设置文化吗?

背景:我有List<object>一些,有些object是数字,有些是字符串.我想用美国文化写的所有数字,但我不知道哪些是数字.这个objectToString()似乎没有采取文化论证.

Ale*_*x J 5

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

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

最好的办法,如果你想指定你的类使用的一种文化,是只具有区域性的实例作为类属性使用,然后使用最字符串/数字格式功能的特定文化的重载.

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

    public void GetSomeString() {
        return new Int32().ToString(Culture);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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