Ответ 1
Оба внутри делают то же самое. Сравните Ticks
и верните результат.
public int CompareTo(TimeSpan value) {
long t = value._ticks;
if (_ticks > t) return 1;
if (_ticks < t) return -1;
return 0;
}
public static bool operator <(TimeSpan t1, TimeSpan t2) {
return t1._ticks < t2._ticks;
}
Единственной причиной может быть другая перегрузка для CompareTo
, которая получает параметр типа object
для null
и затем сравнивает. Реализован как:
public int CompareTo(Object value) {
if (value == null) return 1;
if (!(value is TimeSpan))
throw new ArgumentException(Environment.GetResourceString("Arg_MustBeTimeSpan"));
long t = ((TimeSpan)value)._ticks;
if (_ticks > t) return 1;
if (_ticks < t) return -1;
return 0;
}
Исходный код: Источник ссылки .NET Framework 4.5.1 - Microsoft