8
votes

Un type anonyme peut-il hériter d'un autre type?

Selon la documentation MSDN sur le StringComParer. OrdinalInignorecase Propriété:

La propriété OrdinalInignorecase renvoie une instance d'une classe anonyme dérivée du StringComParer classe.

Est-ce une fonctionnalité que je suis inconnue avec des types anonymes avec héritage? Ou par "Classe anonyme", l'auteur a simplement signé "la classe interne dérivant de stringcomparer , non visible au code client"?


1 commentaires

4 Réponses :


4
votes

Le compilateur peut créer des types anonymes qui héritent d'un autre type - vous ne pouvez pas. C'est dommage, comme ce serait une fonctionnalité froide pour créer un type anonyme sur la mouche qui hérite d'une autre classe ou implémente une interface.


1 commentaires

Oui, créer un type anonyme implémente une interface serait un peu propre.



9
votes

Ce n'est pas un type anonyme dans la signification C # normale du terme.

C'est juste un type interne, vous ne connaissez donc pas le nom de celui-ci: vous ne pouvez pas vous référer au type exact de votre code.


2 commentaires

Merci; C'est fondamentalement ce que je me demandais. J'ai donné à ce +1 mais j'ai accepté la réponse de la volonté, car il s'est effectivement allé à la question de regarder le code source (dans le réflecteur, je suppose).


Le code source est téléchargeable à partir de la SP (bien que leur projet de source de référence soit un shamble honteux) - Je l'ai également indexé par Windows, il est donc très rapide de regarder ce genre de choses. référencesSource.microsoft.com/netframework.aspx



3
votes

Le type anonyme est anonyme pour nous, pas le CLR et la compliance. COMPILER utilise un nommage amusant qui inclut <> dans le nom et le seul compilateur peut le faire! et peut-être chuck norris ...


2 commentaires

Chuck Norris connaît le nom du type anonyme.


Juste, mais je n'étais pas sûr si cette est ce que la documentation signifiait même par "anonyme" (le type généré par le compilateur fourni par, par exemple, la fonctionnalité des types anonymes anonymes de C #). Dessons, de la réponse de la volonté, c'est juste une signification différente.



7
votes

Si vous regardez le code source de StringComParer, vous pouvez voir que Orginalignorecase renvoie une instance d'OrdinalComerer, qui est dérivé de StringComParer.

Il n'y a rien de "anonymous" à ce sujet que je peux voir, c'est juste que c'est interne afin que vous ne puissiez pas le voir de l'extérieur du cadre.


1 commentaires

Merci de faire ce que j'étais trop paresseux pour faire - regarder la source réelle;)