Je pense que vous devriez lire ce qu'Eric Lippert dit à propos de l' Interfaces
. Il a eu ses mains dans le cambouis, donc je pense qu'il sait mieux que tout le monde.
Parfois, il y a pire des cas et le pire des cas. Vous avez à choisir la moins mauvaise.
Ci-dessous est une copie de la poste:
Ils sont là juste pour s'assurer que ces fonctions (dans le
interface) sont mis en œuvre dans la classe qui hérite.
Correct. C'est suffisamment impressionnant d'avantages pour justifier la fonctionnalité. Comme d'autres l'ont dit, une interface est une obligation contractuelle de mettre en œuvre certaines des méthodes, propriétés et événements. L'irrésistible avantage d'un langage statiquement typé, c'est que le compilateur peut vérifier qu'un contrat qui votre code s'appuie sur le est en fait atteint.
Cela dit, les interfaces sont assez faibles pour représenter des obligations contractuelles. Si vous voulez une plus forte et plus flexible pour représenter les obligations contractuelles, regarder dans le Code des Contrats de fonctionnalité livré avec la dernière version de Visual Studio.
C# est un langage parfait, mais parfois, il vous donne le sentiment que
première Microsoft crée le problème(et non pas ce qui permet à plusieurs
l'héritage), puis fournit la solution, qui est plutôt un
fastidieux.
Eh bien, je suis content que vous l'aimez.
Tous les logiciels complexes dessins sont le résultat de la pesée caractéristiques contradictoires les uns contre les autres, et essayer de trouver le "sweet spot" qui donne de grands avantages pour les petits frais. Nous avons appris par l'expérience douloureuse que les langues qui permettent à l'héritage multiple, aux fins de la mise en œuvre le partage des avantages relativement minimes et relativement importante des coûts. Le permet l'héritage multiple uniquement sur les interfaces qui ne sont pas de partager les détails de mise en œuvre, donne de nombreux avantages de l'héritage multiple, sans que la plupart des coûts.