如何在c#中获得两种方法之间的时间跨度?
c#
我正在尝试用 C# 制作一个秒表作为自己的练习。我的计划是创建两个方法“start()”和“stop()”,然后从我的 main.js 中的秒表类调用它们。我的问题是我不知道如何获得这两者之间的时间跨度。
供您参考,这就是我希望程序运行的方式:如果他们输入 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;
当前的实现不会做您打算做的事情,因为您在对象创建时设置了starting和finishing:字段初始值设定项在任何构造函数代码之前执行。所以,你应该设置starting的start()方法,并finishing在stop()方法。然后您也可以在stop()方法中计算如上所示的持续时间。
请允许我对命名做一点补充说明:“开始”和“结束”是英语中的渐进形式,但在这里您想命名特定的值。因此我推荐“ startTime ”和“ endTime ”/“ stopTime ”。