¿Cuál es la utilidad de los constructores públicos en clases abstractas en C #?

Si un constructor público en una clase abstracta solo puede ser llamado por sus clases derivadas, debería ser funcionalmente equivalente a un constructor protegido. ¿Derecha?

¿Hay alguna diferencia en declarar un constructor público, en lugar de uno protegido, en una clase abstracta? ¿Para qué lo usarías? ¿Por qué el compilador no se queja?

Respuestas a la pregunta(3)

Su respuesta a la pregunta