2012-07-02 10 views
6

documentación de Microsoft .NET para el constructor de clase System.ServiceProcess.ServiceBase dice:¿Llamo al constructor base cuando se deriva de ServiceBase?

Si anula el constructor de la clase base debe llamar explícitamente en el constructor de la clase derivada.

En Using Constructors en la Guía de Microsoft programación de C#, que dice:

En una clase derivada, si un constructor de la clase base no se llama explícitamente utilizando la palabra clave base, el constructor por defecto, si hay uno, se llama implícitamente.

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

Respuesta

5

No importa. Estos compilan a la misma IL:

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

No sé qué ServiceBase recomienda llamar explícitamente. Me gustaría ir con la otra sugerencia, ya que parece tener más sentido.

+0

¿La documentación _ "anula el constructor de la clase base" _ incluso tiene sentido? Los constructores de instancia no son realmente virtuales y, por lo que yo sé, no son heredados. Pero, por supuesto, cuando solo hay un constructor de instancia accesible en la clase base, no hay nada que puedas hacer mal (ya que tienes que "encadenar" algún constructor base). La documentación senetence puede tener sentido en algún lenguaje .NET distinto de C#? ¿O es pura tontería? –

+1

Por lo que puedo decir, no tiene sentido. –

Cuestiones relacionadas