C# 在Visual Studio中调试时显示DateTime的毫秒组件

C# 在Visual Studio中调试时显示DateTime的毫秒组件,c#,visual-studio,debugging,time-format,C#,Visual Studio,Debugging,Time Format,我试图在Visual Studio中调试需要毫秒精度的东西,这使调试变得非常繁重,因为系统的参数小于ToString()表示形式。DateTime不包括毫秒组件 例如,当验证System.DateTime的数组是否已排序时,我希望在从“局部变量”窗口进行检查时能够看到毫秒组件 我在DateTime.ToString 它似乎继承了系统全球化设置,该设置不允许您指定毫秒格式(原因很明显): 谢谢。在我回答之前,我首先想回答你对这个问题的一点意见: 这需要编写代码。我说的是在调试时检查值 我的答案是

我试图在Visual Studio中调试需要毫秒精度的东西,这使调试变得非常繁重,因为
系统的参数小于
ToString()
表示形式。DateTime
不包括毫秒组件

例如,当验证
System.DateTime
的数组是否已排序时,我希望在从“局部变量”窗口进行检查时能够看到毫秒组件

我在
DateTime.ToString

它似乎继承了系统全球化设置,该设置不允许您指定毫秒格式(原因很明显):


谢谢。

在我回答之前,我首先想回答你对这个问题的一点意见:

这需要编写代码。我说的是在调试时检查值

我的答案是写一行代码;但是,它只影响调试器可视化工具,并且只影响
DateTime
的每个实例,并且不影响代码的运行时性能

也就是说:

可以添加程序集级属性来更改调试器对类的可视化方式。下面是我自己代码中的一个基本示例:

[assembly: DebuggerDisplay("Start={StartDate} | End={EndDate}]", Target = typeof(DateRange))]
在上面的代码中,第一个参数是定义要在调试器中看到的模板的字符串

您可以将其放置在任何文件中,但老实说,它与其他程序集级别属性一起属于AssemblyInfo.cs文件

现在,我想在你的例子中,你应该让字符串参数像这样(我没有尝试过这个):


如果这不正确,请随时通知我,我将进行必要的更正。

我建议在调试时添加一个。您可以查看代码中使用的对象的属性,即使代码本身从未访问这些属性。只需查看
DateTime
实例的
毫秒
属性。

调试时,我有点不明白您的意思。 我假设您正在VisualStudio中运行应用程序

调试时,将鼠标悬停在毫秒属性上,然后单击展开箭头,即可查看该属性

您可以使用VisualStudio和“添加监视”功能来观察属性,或者简单地使用断点来实现这一点


如果断点将使测试结果不可用,则必须实现调试机制,例如,使用Console.WriteLine记录所需的信息。然后,您可以在输出窗口中看到结果。

ToString()可以接收格式参数,您可以在格式中指定毫秒。您可以使用程序集级属性更改调试器中设置日期时间的格式。没有必要创建一个类。Amy是正确的,我的解决方案可能会有些过头。我只是想了想,你可以在调试中添加一个显示毫秒属性的手表。你可以在Visual Studio中更改格式。请参阅@lewsterin
DateTime
是一个结构,不能从中继承。该格式将适用于是。虽然我假设OP需要的格式包括毫秒,而不仅仅是毫秒。@Evk好的,是的。OP确实说他不想在格式字符串本身方面寻求帮助,所以我认为这没关系。将鼠标悬停在DateTime上并扩展其属性,或者将属性扩展为数组中的几十行是一项繁重的工作;)
[assembly: DebuggerDisplay("{ToString(\"fff\")}", Target = typeof(DateTime))]