编辑:在Visual Studio 2013中运行此代码时,调试器显示的是Utc
而不是Local
。 这是Visual Studio 2015 Debugger中的一个错误。
编辑:我已经将代码放在独立的控制台应用程序中,但无法在任何版本的VS中重现。非常遗憾。
有人能向我解释一下这个屏幕截图中看到的东西怎么可能?!
- 在第298行,
endingTimePeriodStartDate
被重新定义为其Date
值,但被设置为DateTimeKind.Utc
。 - 在第300行,如果
endingTimePeriodStartDate
实际上不是DateTimeKind.Utc
,则会抛出异常。 - 在第305行中断点被触发,这意味着第302行上的异常没有被抛出,也就是说
endingTimePeriodStartDate.Kind == DateTimeKind.Utc
- (我还在第305行之前做了一个
System.Diagnostic.Debug.WriteLine(endingTimePeriodStartDate.Kind)
,它在输出窗口中打印“Utc”)。 - 当我查看调试器窗口中的Locals和Watch以及悬停在变量上时,
Kind
属性显示的是DateTimeKind.Local
Task
,我猜测您在使用async
编程。在第300行和305行之间的这个小间隙内,是否有可能另一个线程更改了endingTimePeriodStartDate
? - Christoph Finknew ArgumentNullException(nameof(date))
来消除“魔术字符串”? - Christoph Fink