¿Por qué C # implementa métodos como no virtuales de forma predeterminada?

A diferencia de Java, ¿por qué C # trata los métodos como funciones no virtuales de forma predeterminada? ¿Es más probable que sea un problema de rendimiento en lugar de otros posibles resultados?

Recuerdo haber leído un párrafo de Anders Hejlsberg sobre varias ventajas que la arquitectura existente está aportando. Pero, ¿qué pasa con los efectos secundarios? ¿Es realmente una buena compensación tener métodos no virtuales por defecto?

Respuestas a la pregunta(9)

Su respuesta a la pregunta