Debe evitar preocuparse por las implicaciones de rendimiento de características de lenguaje específicas a menos que tenga pruebas específicas (medidas) de que realmente están causando un problema.
Sus principales preocupaciones deberían ser la exactitud del código y su capacidad de mantenimiento.
Como observación general, sin embargo, a menudo se puede evitar el fundido innecesario en C# simplemente aplicando buenas prácticas de programación OO y utilizando genéricos (particularmente las colecciones) de manera apropiada. En los casos en los que es necesario realizar un casting, es muy poco probable que sea un cuello de botella de rendimiento, a menos que lo haga en un ciclo cerrado o con tipos que puedan arrojar una excepción de conversión no válida.
La mayoría de los problemas de rendimiento del mundo real surgen de las elecciones de algoritmos o la falta de conocimiento de la plataforma en sí misma, no de características específicas del lenguaje.
Tal vez podrías agregar algo al final sobre __la sobrecarga del tipo casting__. Es bueno tener un consejo, pero no responde la pregunta. –
Una buena respuesta a una pregunta diferente. – Acidic