Algoritmo para detectar períodos superpuestos [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Determine si dos rangos de fechas se superponen 34 respuestas

Tengo que detectar si se superponen dos períodos de tiempo.
Cada período tiene una fecha de inicio y una fecha de finalización.
Necesito detectar si mi primer período de tiempo (A) se superpone con otro (B / C).
En mi caso, si el inicio de B es igual al final de A, no se superponen (lo contrario también)
Encontré los siguientes casos:

Así que en realidad estoy haciendo esto así:

tStartA < tStartB && tStartB < tEndA //For case 1
OR
tStartA < tEndB && tEndB <= tEndA //For case 2
OR
tStartB < tStartA  && tEndB > tEndA //For case 3

(El caso 4 se toma en la cuenta en el caso 1 o en el caso 2)

Esotrabajo, pero parece que no es muy eficiente.

Entonces, primero hay una clase existente en C # que puede modelar esto (un período de tiempo), algo así como un intervalo de tiempo, pero con una fecha de inicio fija.

n segundo lugar: ¿ya existe un código C # (como en elDateTime clase) que puede manejar esto?

Tercero: si no, ¿cuál sería su enfoque para hacer que esta comparación sea la más rápida?

Respuestas a la pregunta(12)

Su respuesta a la pregunta