使用“new()和”.StartNew()“创建新实例有什么区别?

时间:2013-04-28 03:56:25

标签: c# .net system.diagnostics stopwatch

来自我对问题"Stopwatch in a Task seems to be additive across all tasks, want to measure just task interval"

的“回答”

创建新Stopwatch实例之间可能存在以下差异:

Stopwatch timer = System.Diagnostics.Stopwatch.StartNew();

Stopwatch timer = new Stopwatch();
timer.Start();  

隐含的询问:
为什么提供StartNew()方法?

3 个答案:

答案 0 :(得分:8)

StartNew,创建秒表的新实例并启动它。

简单new仅限于秒表实例化。它不会启动秒表。

对于您在创建新实例并致电Start的当前代码,Stopwatch.StartNew()

应该没有任何区别

请参阅Stopwatch.StartNew() - MSDN

  

这种方法等效来调用Stopwatch构造函数和   然后在新实例上调用Start。

StartNew提供了一种更简单的方法,可以一步创建和启动秒表。

答案 1 :(得分:5)

  

为什么提供了StartNew()方法?

这是一个更简单的选择。 StartNew实际上与分配新的秒表并立即启动它相同。

由于这是一个非常常见的用例,StartNew工厂方法只是简化和缩短了API,并减少了使用秒表所需的代码。

答案 2 :(得分:0)

初始化一个新的System.Diagnostics.Stopwatch实例并将经过时间属性设置为零,并开始测量经过时间

并保存一行代码以隐式调用 Start()方法