11
votes

Constructeur de classe abstraite

Duplicaté possible:

Pourquoi ne puis-je pas créer Un constructeur abstrait sur une classe C # abstraite?

Le constructeur de classe abstrait peut-il être marqué comme «abstrait»?


0 commentaires

3 Réponses :


19
votes

non. C # ne prend pas en charge cela dans aucune version. Notez que les constructeurs sont pas hérités dans des classes dérivées, bien qu'ils puissent être "chaînées". C'est probablement ce que vous voulez faire.

Si vous souhaitez indiquer que la classe dérivée doit effectuer une sorte d'initialisation, vous pouvez créer une méthode abstraite initialiser ou telle que le constructeur de la classe de base (et indirectement de la sous- classe) appelle la création.

En tant que point secondaire, je ne suis pas sûr de savoir si le CLR (ou le langage CLR (CIL associé) le soutient. Je soupçonnerais que cela pourrait, bien qu'il n'y ait peu d'utilisations à partir de l'intérieur du C # pour la raison juste mentionnée.


0 commentaires

18
votes

Non, un constructeur ne peut pas être marqué comme abstrait. Dans les classes abstraites, les constructeurs sont généralement marqués comme protégé cependant, au moins c'est ce que je vous recommanderais de faire.


2 commentaires

Cela n'a pas d'importance, que vous les marquiez comme protégé ou le public normal , car ils ne sont accessibles que via des classes dérivées de toute façon! En disant que, marquage comme protégé est probablement sensé d'un point de vue sémantique.


MSDN.MicRosoft.com/en-us/Library /ms182126(V=VS.100).aspx - Sensible du point de vue sémantique faisant autorité



2
votes

Fondamentalement no.

Si son résumé, vous devez le remplacer dans une classe d'enfant concrete et vous ne pouvez pas remplacer un constructeur, seulement surcharger.


0 commentaires