- Es un lenguaje administrado y, por lo tanto, tiene una sobrecarga de rendimiento debido a las características del lenguaje administrado (incluida la reflexión).
- Es Microsoft y se basa en gran medida en las tecnologías de Microsoft que pueden ser complicadas y desalentadoras cuando se intenta realizar tareas simples.
- Por razones políticas: durante mucho tiempo, los desarrolladores de código abierto lo temían porque Microsoft podía en cualquier momento reclamar la propiedad de las API. Esto ya no es una razón, ya que Microsoft creó públicamente una “promesa de desarrollador” con vinculación legal en la que dicen que no demandarán a los usuarios de las API y otras cosas (lo digo así porque no estoy seguro exactamente de lo que lanzaron , pero los desarrolladores estaban bastante contentos).
- Mono, la alternativa de código abierto, no es tan bueno (bastante lento, de hecho) y está poniéndose al día con los desarrolladores de Microsoft .NET Framework.
- Al igual que con Java, los desarrolladores de C # pueden ser bastante descuidados y crear software sobre-diseñado. La filosofía del lenguaje lo alienta, y he visto demasiados ejemplos para cuestionar esta razón. Por ejemplo, muy pocos programadores de C # piensan en el consumo de memoria.
Puede haber otras razones también. Este fue mi razonamiento hasta que encontré que C # era un lenguaje espléndido y expresivo, y muy productivo también. Todavía no me gusta mucho el marco de trabajo de Microsoft, pero el espacio de nombres del sistema está bastante bien pensado y las extensiones de LINQ también son bastante buenas.