2010-03-31 8 views
2

J'ai une classe .NET "MustInherit" qui déclare un constructeur avec un paramètre entier. Cependant, Visual Studio me donne une erreur lorsque je crée une classe dérivée indiquant qu'il n'y a aucun constructeur qui peut être appelé sans arguments. Est-il possible d'hériter du constructeur avec des arguments?Comment hériter des constructeurs avec des arguments dans .NET?

En ce moment, je dois utiliser

Public Sub New(ByVal A As Integer) 
    MyBase.New(A) 
End Sub 

dans les classes dérivées. y-a-t-il un moyen d'éviter ça?

Répondre

2

Non, ce n'est pas possible. Chaque constructeur ayant des arguments dans la classe de base doit être redéclaré dans la classe dérivée.

+0

@ "Darin Dimitrov" - pas tout à fait correct. S'il vous plaît voir http://stackoverflow.com/questions/2550747/how-to-inherit-constructors-with-arguments-in-net/2550895#2550895. – Enigmativity

-1

Oui, c'est possible. Mais vous devez appeler le constructeur de base avec un entier.

public class A 
{ 
    public A(int x) 
    { 
    } 
} 

public class B : A 
{ 
    public B() 
     : base(42) 
    { 
    } 
} 

ou

Public Class B 
    Inherits A 

    Public Sub New() 
     MyBase.New(42) 
    End Sub 
End Class 
+0

Ce n'est pas l'héritage du constructeur - la classe B n'a pas de constructeur acceptant un entier. –

+0

@ "M.A. Hanin" - Je ne pense pas que la question concerne l'héritage du constructeur, mais l'héritage d'une classe sans constructeur sans paramètre résultant dans une classe dérivée avec un constructeur sans paramètre. Sinon, la question n'aurait vraiment aucun sens. – Enigmativity

+0

En fait, la question est d'hériter du constructeur. Puisque les variables initialisées sont toutes déclarées par la classe de base, je voulais que le constructeur de la classe de base soit utilisé. Autrement dit, le constructeur ne serait pas modifié par les classes dérivées. Mais apparemment, cela semble impossible. – Soumya

Questions connexes