0

我总是看到这个代码示例,但不知道何时使用 which :

假设我有一个要解析的日期:13 December 2011

它可以用

 var g=DateTime.ParseExact("13 December 2011","d MMMM yyyy",CultureInfo.GetCultureInfo("en-US"),DateTimeStyles.None );

或通过

 Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); 
 var g=DateTime.ParseExact("13 December 2011","d MMMM yyyy",null,DateTimeStyles.None );

两者都提供相同的结果。

我什么时候应该使用 which ?

4

4 回答 4

2

第一个示例将使用该文化进行特定操作。

第二个示例将更改正在运行的线程的区域性,影响该操作以及受当前区域性影响的后续操作, 直到线程区域性发生更改。

因此,请使用适合您情况的那个。

于 2012-10-09T16:16:37.177 回答
2

该解析的结果是相同的,但如果您设置线程的当前区域性,这也会影响您稍后执行的任何其他区域性相关操作。

于 2012-10-09T16:17:09.453 回答
1

第一行将使用 ParseExact 方法中指定的区域性作为第二个参数。即使线程的文化不同,这也会解析 en-US 文化中的日期。第二个将更改线程的文化,并且对 ParseExact 的调用将使用在上一行中设置的新文化。

于 2012-10-09T16:19:49.630 回答
1

它应该是第一个。至于第二个,您在当前线程中更改了应用程序的当前文化可能会导致错误,如果您使用不同的文化与US.

于 2012-10-09T16:17:01.280 回答