В вашем коде есть несколько проблем:
Это вызывает переполнение стека. Потому что вы используете свойство (с большой буквы C), где вы хотите использовать поле (с маленькой буквы c). C # чувствителен к регистру.
private DateTime Czas_rozpoczecia
{
get
{
return Czas_rozpoczecia;
}
}
Вы, вероятно, хотите это:
private DateTime Czas_rozpoczecia
{
get
{
return czas_rozpoczecia;
// ^ Small letter
}
}
Или даже это:
private DateTime Czas_rozpoczecia => czas_rozpoczecia;
Вы используете аргумент сто же имя, что и поле? Затем вы присваиваете значение (аргументу?) И забываете об этом.
public DateTime Start(DateTime czas_rozpoczecia)
{
return czas_rozpoczecia = DateTime.Now;
}
Возможно, вы захотите использовать его следующим образом. Сохраните текущий DateTime в поле. И вы должны исправить это и для метода Stop
.
public DateTime Start()
{
czas_rozpoczecia = DateTime.Now;
}
Разница между двумя DateTimes - это TimeSpan, и хранить его бесполезно, поскольку у вас уже есть все поля.
public Double WyswietlCzas()
{
return (czas_rozpoczecia - czas_zakonczenia).TotalSeconds;
}
}
Теперь исправьте основной код. Используйте ReadKey
, чтобы дождаться ключа. И вызовите методы, используя экземпляр (s1
), который вы только что создали.
var s1 = new Stoper();
Console.ReadKey();
s1.Start();
Console.ReadKey();
s2.Stop();
И вы сможете понять, как печатать секунды самостоятельно.