Vous devriez éviter de vous soucier des implications en termes de performances de fonctionnalités linguistiques spécifiques, à moins que vous n'ayez des preuves spécifiques (mesures) indiquant qu'elles causent réellement un problème.
Vos principales préoccupations devraient être l'exactitude du code et il est maintenabilité.
À titre d'observation générale, cependant, la coulée inutile peut souvent être évité en C# simplement en appliquant de bonnes pratiques de programmation orientée objet et l'utilisation de génériques (en particulier les collections) de manière appropriée. Dans les cas où vous avez besoin d'effectuer un casting, il est hautement improbable qu'il s'agisse d'un goulot d'étranglement des performances, sauf si vous le faites dans une boucle étroite ou avec des types susceptibles de générer une exception de transtypage invalide.
La plupart des problèmes de performances du monde réel résultent de choix d'algorithmes ou d'un manque de connaissance de la plate-forme elle-même - et non de caractéristiques linguistiques spécifiques.
Peut-être que vous pourriez ajouter une petite chose à la fin au sujet de la surcharge du type casting. C'est bon d'avoir des conseils, mais ça ne répond pas à la question. –
Une bonne réponse à une question différente. – Acidic