ストップウォッチと呼ばれるクラスとその2つのメソッド(Start()とStop())を記述します。開始と終了のたびに、私はその時間間隔のTimeSpanを取得する必要があります。しかし、私がそれを実行するたびに、私は常にTimeSpan 00:00:00を取得します。どこが間違っていますか?ここ は私のコードです:DateTimeとTimeSpanを使用したC#のストップウォッチ
class Stopwatch
{
private DateTime _start;
private DateTime _stop;
private bool _running;
public void Start()
{
if (!_running)
{
_running = true;
_start = DateTime.Now;
}
}
public TimeSpan Stop()
{
if (_running)
{
_stop = DateTime.Now;
_running = false;
}
return (_stop - _start);
}
mainメソッドで実行します。私が試した
static void Main(string[] args)
{
Console.WriteLine("Stopwatch application");
Console.WriteLine("tap 'y' to start,'n' to stop,'q' to quit.");
while (true)
{
Console.WriteLine("tap 'y' to start,'n' to stop,'q' to quit.");
var input = Console.ReadLine();
var stopWatch = new Stopwatch();
if (input == "y")
{
Console.WriteLine("start");
stopWatch.Start();
}
if (input == "n")
{
Console.WriteLine("stop");
Console.WriteLine(stopWatch.Stop().ToString("G"));
}
if (input == "q") break;
}
}
一つの解決策は、Cosole.ReadLine(ですべての入力を置き換える、です)、それがうまく動作します。しかし、元のコードはどこが間違っていますか?あなたがStop
を呼び出すとき_running
が常にfalse
をすることを意味する -