Przeszukałem kilka próbek Microsoft kodu czujnika Kinect i natknąłem się na następującą linię.Dlaczego warto używać TimeSpan.CompareTo() zamiast < > lub =
TimeSpan zeroDuration = TimeSpan.FromSeconds(0.0);
TimeSpan timeRemaining = ...;
if (timeRemaining.CompareTo(this.zeroDuration) > 0)
{
}
rozumiem jak CompareTo()
jest przydatna w sytuacjach, takich jak sortowanie, ale dlaczego miałby on być stosowany w ramach warunkowego if()
zamiast bardziej bezpośrednie podejście?
if (timeRemaining > this.zeroDuration)
{
}
PS: wziąłbym go z przymrużeniem oka, czy to z innego źródła, ale biorąc pod uwagę ogólną jakość kodu zakładamy, że nie ma powodu
będę zakładać, że to tylko różnica stylistyczna, ale mogę się mylić. @Amicable to głównie o różnych porównaniach równości, a nie '>' vs 'PorównajTo'. –
Dla TimeSpans nie ma różnicy. Domyślam się, że przykładowy dev nie był świadomy istnienia przeciążonych operatorów. –
@Amicable null występuje przed ciągiem znaków i korzysta z CultureInfo.CurrentCulture.CompareInfo.Compare, co oznacza, że użyje porównania zależnego od kultury. Może to oznaczać, że ß będzie porównywać z SS w Niemczech lub podobnym - nie ma zastosowania do TimeSpan –