Если предположить, что HasOverlapTime()
должно вернуть true
, если два временных диапазона перекрываются, а также что временные диапазоны представляют собой "полуоткрытые" интервалы (т. Е. Конец диапазона НЕ включен в диапазон), тогда гораздо более простая реализация:
private static bool HasOverlapTime2(TimeSpan requestFrom, TimeSpan requestTo, TimeSpan detailFrom, TimeSpan detailTo)
{
return (detailTo > requestFrom) && (detailFrom < requestTo);
}
Нет необходимости использовать сопоставление с образцом для упрощения кода.
Обратите внимание, что ваш код использует полуоткрытые интервалы. Если вместо этого вы хотите использовать закрытые интервалы (т. Е. Интервал включает его время окончания), то вы должны изменить тест на:
private static bool HasOverlapTime(TimeSpan requestFrom, TimeSpan requestTo, TimeSpan detailFrom, TimeSpan detailTo)
{
return (detailTo >= requestFrom) && (detailFrom <= requestTo);
}