La única razón por la que puedo pensar es que a veces tendría que escribir métodos protegidos para anular otros métodos protegidos. El lenguaje podría han sido diseñados para permitir esto:
protected override void Foo()
pero no este
protected void Foo()
pero que podría haber sido visto a ser un poco difícil de seguir - es la ausencia de override
que lo hace inútil, mientras que en el caso de
public virtual void Foo()
es el presencia de virtual
que es inútil. La presencia de algo "incorrecto" es probablemente más fácil de entender que la ausencia de algo útil.
En este caso, ser virtual también puede tener implicaciones de rendimiento, mientras que hacer algo protegido en lugar de privado probablemente no lo haga, por lo que es un poco más severo.
Sin embargo, estas son solo conjeturas, si tenemos mucha suerte, Eric Lippert dará una respuesta más definitiva. Él es el único que quiere, no me :)
Mejor respuesta: Trato a los avisos como errores y son equivalentes de todos modos;)
Yo daría una respuesta, pero por alguna razón creo que JS tendría una mejor. Hmm. –
Aparentemente, JS está priorizando SO en THREAD_PRIORITY_BELOW_NORMAL - ¡rápidamente todos obtienen sus respuestas mientras usted todavía puede! – cfeduke
+1 buena pregunta, nunca me he encontrado con esta causa, ni siquiera pensé en hacer esto ... ¡porque no tiene ningún sentido! –