¿Por qué no podemos cambiar el modificador de acceso al anular los métodos en C #?

En C #, no podemos cambiar el modificador de acceso mientras anulamos un método de la clase base. p.ej

Class Base
{
   **protected** string foo()
   {
       return "Base";
   }
}

Class Derived : Base
{
   **public** override string foo()
   {
       return "Derived";
   }
}

Esto no es válido en C #, dará un error de tiempo de compilación.

Quiero saber la razón, por qué no está permitido. ¿Hay algún problema técnico o puede conducir a algo que no es consistente en términos de restricción de acces

Respuestas a la pregunta(8)

Su respuesta a la pregunta