.net 比较两个CultureInfo实例的最佳方法是什么?

.net 比较两个CultureInfo实例的最佳方法是什么?,.net,cultureinfo,culture,.net,Cultureinfo,Culture,背景: 我对一个组件有一个问题,它在每次调用它的特定方法后都会将当前线程区域性更改为“en-US”。在我的过程中,这进一步导致了问题,例如,数据访问层不再工作,因为SqlParameter的CultureInfo也被更改为“en US”,因此给定的字符串不能再解析为DateTime SqlValue 可能的解决办法: 因此,我们的想法是在调用更改当前线程区域性的特定方法之前备份线程的当前区域性,然后将其恢复。首先恢复区域性时,我会检查区域性是否发生了任何更改 问题: 我可以将备份的Culture

背景:

我对一个组件有一个问题,它在每次调用它的特定方法后都会将当前线程区域性更改为“en-US”。在我的过程中,这进一步导致了问题,例如,数据访问层不再工作,因为SqlParameter的CultureInfo也被更改为“en US”,因此给定的字符串不能再解析为DateTime SqlValue

可能的解决办法:

因此,我们的想法是在调用更改当前线程区域性的特定方法之前备份线程的当前区域性,然后将其恢复。首先恢复区域性时,我会检查区域性是否发生了任何更改

问题:

我可以将备份的
CultureInfo.Name
Thread.CurrentThread.CurrentCulture.Name
进行比较,但我也可以使用CultureInfo实例的
.Equals()
方法。比较两个CultureInfo实例的更好方法是什么?是否有第三种/更好的解决方案?

您应该使用它(因为比较CultureInfo实例时会过载)


如本博客所示:

Yes,.Equals()被重载,我测试了两个实例,例如CultureInfo(“de de”),其中我更改了两个对象之一的属性,然后调用Equals()->它也返回true-ok。我只是想确定:-)我会把你的答案设为接受。但是我认为对于我的用例来说,比较.Name属性就足够了。也许你对这种方法有些担心?:-)谢谢。看看哪里可以看到microsoft是如何实现equals的。比较名称和比较信息只是为有类似问题的人提供的信息:CultureInfo.DateTimeFormat属性列表未在CultureInfo.Equals()中签入!因此,它对我的特殊问题没有帮助,因为更改的DateTimeFormat属性导致在DAL中将字符串错误转换为datetime。
bool result2 = cultureInfo1.Equals(cultureInfo2);