2011-03-17 13 views
7

cómo y cuándo llamar al constructor de la clase base en C#cómo y cuándo llamar al constructor de la clase base en C#

+0

posible duplicado de [Llamada constructor base en C#] (http://stackoverflow.com/questions/12051/calling-base-constructor-in- c) y [C# Calling Base Class Constructor] (http://stackoverflow.com/questions/4212624/c-calling-base-class-constructor) –

Respuesta

14

Usted puede llamar al constructor de la clase base de la siguiente manera:

// Subclass constructor 
public Subclass() 
    : base() 
{ 
    // do Subclass constructor stuff here... 
} 

que llamarían la clase base si hay algo que todas las clases secundarias necesitan tener configurada. objetos que necesitan ser inicializadas, etc ...

Espero que esto ayude.

+5

También puede llamar al constructor de la clase base de esta manera: 'public Subclass() {} '- esto tiene exactamente el mismo comportamiento que tu ejemplo. –

7

Por lo general es una buena práctica para llamar al constructor de la clase base de su constructor de la subclase para asegurar que la clase base se inicializa antes de que su subclase. Utiliza la palabra clave base para llamar al constructor de la clase base. Tenga en cuenta que también puede llamar a otro constructor de su clase con la palabra clave this.

He aquí un ejemplo de cómo hacerlo:

public class BaseClass 
{ 
    private string something; 

    public BaseClass() : this("default value") // Call the BaseClass(string) ctor 
    { 
    } 

    public BaseClass(string something) 
    { 
     this.something = something; 
    } 

    // other ctors if needed 
} 

public class SubClass : BaseClass 
{ 
    public SubClass(string something) : base(something) // Call the base ctor with the arg 
    { 
    } 

    // other ctors if needed 
} 
+6

No es sólo una buena práctica, es un requisito impuesto por el compilador. [Un constructor base será llamado, le guste o no.] (Http://stackoverflow.com/questions/3265958/how-can-i-tell-the-inheriting-class-to-not-call-its- base de clase sin parámetros-co) –

+1

... Buen punto se llamará al ctor defecto si usted no llama explícitamente un ctor específica. –

+0

En Flash/AS3, que podría hacer el trabajo en el constructor de la subclase, a continuación, llamar "super) (" hasta cierto punto, aunque para ejecutar el constructor de la clase base, y después continuar con más código en el constructor de la subclase. En C#, se ve obligado a llamar al constructor de la clase base primero, antes de que se ejecute cualquier código en el constructor de la subclase. – Triynko

Cuestiones relacionadas