2010-07-15 7 views

Répondre

18

Le numéro C# ne le supporte pas dans aucune version. Notez que les constructeurs sont non hérités dans les classes dérivées, bien qu'ils puissent être "chaînés". C'est probablement ce que vous voulez faire. Si vous voulez indiquer que la classe dérivée doit effectuer une sorte d'initialisation, vous pouvez créer une méthode abstraite Initialise ou telle que le constructeur de la classe de base (et indirectement de la sous-classe) appelle à la création. Comme point secondaire, je ne suis pas sûr que le CLR (ou le langage CIL associé) le supporte réellement - je le soupçonne peut-être, bien qu'il soit peu utilisé à partir de C# pour la raison que je viens de mentionner.

18

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

+6

Peu importe que vous les marquiez comme 'protected' ou normal' public', car ils ne sont accessibles que via chaînage dans les classes dérivées! Dire cela, marquer comme «protégé» est probablement sensible d'un point de vue sémantique. – Noldorin

+1

http://msdn.microsoft.com/en-us/library/ms182126(v=vs.100).aspx - sensible du point de vue sémantique autoritaire –

2

Fondamentalement pas. Si son résumé, vous devez le remplacer dans une classe enfant concrète, et vous ne pouvez pas remplacer un constructeur, seulement le surcharger.

Questions connexes