Gil*_*eed -2 c# stopwatch elapsedtime
我对此stopWatch.Elapsed财产感到非常困惑。它以这种格式显示时间值
我想知道应该在此输出的末尾添加什么。是ms(01:20:17.0550410ms)还是s(01:20:17.0550410s)?而进一步,如果我想只拿ms该输出的一部分,并做一些计算它,我应该采取哪些价值,是它.0550410还是55.041?我的问题听起来很傻,但是我真的很困惑!请帮忙。
\n\n\n我对这个 stopWatch.Elapsed 属性感到非常困惑。它以这种格式显示时间值
\n
我将从头开始,只是为了确保一切都被理解。
\n\nMicrosoft .Net 框架设计者已决定存储信息的所有变量均派生自Class 或 Struct(ture)。这两种基本类型都有一些默认方法。ValueType 的这些方法之一(我将在下面讨论)是.ToString()。当您在 Windows 运行时结构上调用该ToString()方法时,它会为不覆盖的值类型提供默认行为ToString()。
我假设您正在谈论System.Diagnostics.Stopwatch类。文档指出:
\n\n\n\n\n秒表实例可以测量一个时间间隔的经过时间,或多个时间间隔的经过时间的总和。在典型的秒表场景中,您调用 Start 方法,然后最终调用 Stop 方法,然后使用 Elapsed 属性检查经过的时间。
\n
在开始查看秒表的属性之前,我们需要了解,为了使秒表正常工作,需要有一种方法来存储时间量(信息)。在这种情况下,时间大小是两个时间点之间差异的数字表示;在本例中是秒表开始的时间和秒表结束的时间。Microsoft .Net 创建了一个名为TimeSpan 的结构来存储该值。
\n\n查看Stopwatch.Elapsed其类型为 的属性的文档TimeSpan。

由于您的屏幕截图似乎位于控制台应用程序中,因此我假设代码(应始终提供但并未提供)如下:
\n\nConsole.Writeline("Took Time: " + stopWatch.Elapsed.ToString());\nRun Code Online (Sandbox Code Playgroud)\n\n此代码使用TimeSpan\'s .ToString() overrideTimeSpan将 转换为a :string

因此,不传递值.ToString()是一个空值,默认为("c")TimeSpan 格式字符串中的 It\'s:

所以用你的例子:
\n\n01:20:17.0550410s\nRun Code Online (Sandbox Code Playgroud)\n\n应该很明显,01是小时,20是分钟,17是秒,.0550410是十分之一秒(十分之一秒)。在末尾添加任何字符串值很可能没有意义,因为所有数字都有不同的持续时间。如果您想更具体,我认为唯一有意义的方法是将其更改为:
01h 20m 17.0550410s\nRun Code Online (Sandbox Code Playgroud)\n\n或者
\n\n01h 20m 17s 055.0410ms\nRun Code Online (Sandbox Code Playgroud)\n
所示单位是“秒的小数部分”,到小数点后第七位-即百万分之一秒。
因为毫秒是0.001秒,所以毫秒数是55.041。
现在,正如其他所有人所说,请使用stopWatch.Elapsed.TotalMilliseconds(获取所有毫秒)或stopWatch.Elapsed.Milliseconds(获取所有不到1秒的毫秒)。