J'ai quelques types qui découlent de Base
simplifiée comme indiqué ci-dessous.Surcharge "base" constructeur ou "this" constructeur?
Je ne suis pas sûr d'utiliser le constructeur de la classe de base ou le constructeur this
lors de la surcharge des constructeurs.
ConcreteA
surcharges constructeurs utilisant purement base
constructeurs, tout en
this
ConcreteB
surcharges en utilisant pour les deux premières surcharges.
Quelle serait une meilleure façon de surcharger les constructeurs?
public abstract class Base
{
public string Name { get; set; }
public int? Age { get; set; }
protected Base() : this(string.Empty) {}
protected Base(string name) : this(name, null) {}
protected Base(string name, int? age)
{
Name = name;
Age = age;
}
}
public class ConcreteA : Base
{
public ConcreteA(){}
public ConcreteA(string name) : base(name) {}
public ConcreteA(string name, int? age) : base(name, age)
{
}
}
public class ConcreteB : Base
{
public ConcreteB() : this(string.Empty, null){}
public ConcreteB(string name): this(name, null){}
public ConcreteB(string name, int? age) : base(name, age)
{
}
}
[Modifier] Il ressemble à ce que Ian Quigley a suggéré dans son answer semblait logique. Si je devais avoir un appel qui initialise les validateurs, ConcreteA(string)
n'initialisera jamais les validateurs dans le cas suivant.
public class ConcreteA : Base
{
public ConcreteA(){}
public ConcreteA(string name) : base(name) {}
public ConcreteA(string name, int? age) : base(name, age)
{
InitializeValidators();
}
private void InitializeValidators() {}
}
Cela semble logique si je devais avoir d'autres initialisations en cours dans les constructeurs concrets. – Sung
Oui, et "this" appellera toujours "base" à la fin de la journée. Donc, même si "ceci" ne fait rien, il va tomber à "baser" –