Duplicaté possible: strong>
Pourquoi ne puis-je pas créer Un constructeur abstrait sur une classe C # abstraite? p> blockQuote>Le constructeur de classe abstrait peut-il être marqué comme «abstrait»? p>
3 Réponses :
non. C # ne prend pas en charge cela dans aucune version. Notez que les constructeurs sont pas hérités em> dans des classes dérivées, bien qu'ils puissent être "chaînées". C'est probablement ce que vous voulez faire. P>
Si vous souhaitez indiquer que la classe dérivée doit effectuer une sorte d'initialisation, vous pouvez créer une méthode abstraite 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. p> initialiser code> ou telle que le constructeur de la classe de base (et indirectement de la sous- classe) appelle la création. P>
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é code> cependant, au moins c'est ce que je vous recommanderais de faire. P>
Cela n'a pas d'importance, que vous les marquiez comme protégé code> ou le public normal code>, car ils ne sont accessibles que via des classes dérivées de toute façon! En disant que, marquage comme protégé code> 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é
Fondamentalement no. p>
Si son résumé, vous devez le remplacer dans une classe d'enfant concrete et vous ne pouvez pas remplacer un constructeur, seulement surcharger. P>