我读取了 csv 文件,列用逗号分隔。在某些文化中,分隔符是点,因此我决定将当前文化更改为“en-US”,后者使用逗号作为分隔符。但是当我完成一些操作后,我需要返回用户使用的文化。但我不能。
如何返回用户使用的当前文化?
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
// do something
CultureInfo ci = CultureInfo.CurrentCulture;
var a = ci.DisplayName;
继续是“en-US”
最佳答案
只需保存然后恢复:
var saved = Thread.CurrentThread.CurrentCulture;
try {
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
// do something
finally {
Thread.CurrentThread.CurrentCulture = saved;
}
另一种(有点奇特)的可能性是将逻辑隐藏在专门设计的类中:
public sealed class CurrentCulture: IDisposable {
private CultureInfo m_Saved;
public CurrentCulture(CultureInfo info) {
//TODO: validate info
m_Saved = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = info;
}
public CurrentCulture(String name) :
this(new CultureInfo(name)) {
}
public void Dispose() {
if (m_Saved != null) {
Thread.CurrentThread.CurrentCulture = m_Saved;
m_Saved = null;
}
}
}
...
using (var c = new CurrentCulture("en-US")) {
// do something
}
关于c# - 如何返回用户在 PC 中使用的当前文化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33998989/