¿Llamo al constructor base al derivar de ServiceBase?

Documentación de Microsoft .NET para el Sistema.ServiceProcess.ServiceBase constructor de clases dice:

Si anula el constructor de la clase base, debe llamarlo explícitamente en el constructor de su clase derivada.

In Usando constructores en la Guía de programación de Microsoft C#, dice:

En una clase derivada, si no se llama explícitamente a un constructor de clase base mediante la palabra clave base, se llama implícitamente al constructor predeterminado, si lo hay.

Entonces, ¿debo llamar al constructor base explícitamente o no, y por qué?

preguntado el 02 de julio de 12 a las 20:07

1 Respuestas

No importa. Estos se compilan en el mismo IL:

public class Service1 : ServiceBase
{
    public Service1() : base() { }
}
public class Service1 : ServiceBase
{
    public Service1() { }
}

No sé por qué ServiceBase recomienda llamarlo explícitamente. Iría con la otra sugerencia, ya que parece tener más sentido.

Respondido 02 Jul 12, 20:07

¿La documentación "anula el constructor de la clase base" siquiera tiene sentido? Los constructores de instancias no son realmente virtuales y, hasta donde yo sé, no se heredan. Pero, por supuesto, cuando solo hay un constructor de instancia accesible en la clase base, no hay nada que pueda hacer mal (ya que tiene que "encadenar" algún constructor base). ¿La sentencia de documentación puede tener sentido en algún lenguaje .NET que no sea C #? ¿O es pura tontería? - Jeppe Stig Nielsen

Por lo que puedo decir, es una tontería. - Tim S.

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.