如何在 C# 中获取两个方法之间的时间跨度?

How to get a time span between two methods in c#?

我正在尝试用 C# 制作一个秒表作为我自己的练习。我的计划是创建两个方法“start()”和“stop()”,然后在我的主程序中从我的秒表 class 中调用它们。我遇到的问题是我不知道如何获得这两者之间的时间跨度。

供您参考,这就是我希望程序的工作方式:如果他们键入 s,计时器将启动,当他们按下 enter 或键入 f 时,时间将显示给他们。

这是我到目前为止写的代码,但是在获取时间跨度时卡住了。

 class StopWatch
{
    DateTime starting = DateTime.Now;
    DateTime finishing = DateTime.Now;
    
    
    public void start()
    {
        Console.WriteLine(starting);
    }

    public void stop()
    {
      
        Console.WriteLine(finishing);
    }

    
}
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("type s to start and f to stop");
        var input = Console.ReadLine();
        var stopwatch = new StopWatch();
        if (input.ToLower() == "s") { stopwatch.start(); }
        var Input2 = Console.ReadLine();
        if (Input2.ToLower() == "f") { stopwatch.stop(); }

        

        Console.ReadKey();
    }
}

我同意使用库中已有内容的评论,但既然你说你是在练习,这里有一些反馈:

直接回答您如何获得 TimeSpan 的问题: var duration = finishing - starting;

当前实现不会执行您打算执行的操作,因为您在对象创建时同时设置了 startingfinishing:字段初始值设定项在任何构造函数代码之前执行。所以你应该在start()方法中设置starting,在stop()方法中设置finishing。然后你也可以在 stop() 方法中计算持续时间,如上所示。

请允许我对命名做一点旁注:“starting”和“finishing”是英文的渐进式,但在这里你想命名特定的值。因此我推荐“startTime”和“endTime”/“stopTime”.