miércoles, 24 de junio de 2015

C# Llamar desde un constructor a otro de la misma clase o de la clase padre

Cuando disponemos de una clase con diferentes constructores C# nos proporciona una sintaxis sencilla para invocar desde un constructor a otro a través de las palabras clave this y base.

Si, por ejemplo, tenemos una clase Persona con un constructor que recibe como parámetros el nombre y apellidos de la persona:

    public class Persona
    {

        public Persona(string nombre, string primerApellido, string segundoApellido)
        {
            Nombre = nombre;
            PrimerApellido = primerApellido;
            SegundoApellido = segundoApellido;
        }

        public string Nombre { get; set; }
        public string PrimerApellido { get; set; }
        public string SegundoApellido { get; set; }
        public string Dirección { get; set; }
    }

Podemos definir nuevos constructores que reciban como parámetros únicamente el nombre o el nombre y el primer apellido:

    public class Persona
    {

        public Persona(string nombre) : this(nombre, null, null) { }

        public Persona(string nombre, string primerApellido) : this(nombre, primerApellido, null) { }

        public Persona(string nombre, string primerApellido, string segundoApellido)
        {
            Nombre = nombre;
            PrimerApellido = primerApellido;
            SegundoApellido = segundoApellido;
        }

        public string Nombre { get; set; }
        public string PrimerApellido { get; set; }
        public string SegundoApellido { get; set; }
        public string Dirección { get; set; }
    }

También podemos definir constructores llamando a los constructores de la clase base. Así podemos crear una clase Empleado que herede de Persona e invocar desde la clase Empleado los constructores de la clase Persona.

    public class Empleado : Persona
    {

        public Empleado(string nombre) : base(nombre) { }
        public Empleado(string nombre, string primerapellido) : base(nombre, primerapellido, null) { }
        public Empleado(string nombre, string primerapellido, string segundoapellido)
            : base(nombre, primerapellido, segundoapellido) { }

    }


5 comentarios:

  1. Hola, Asier, disculpa que te moleste, quisiera hacerte una consulat si fuere factible.............existe alguna forma de llenar una sola Columna de varias de un Grid con el contenido de un TextBox (TextCalendar), que recoge la Fecha de un Objeto Calendar, despues de un Boton Aceptar???............Debo llenar una sola Columna de ese GridView.........

    Disculpa las molestias, te enviare un presente cuando que termine esto, mil millones de gracias, nos vemos,.,

    ResponderEliminar
  2. No encuentro Informacion en Internet, ni en foros......

    ResponderEliminar
  3. No encuentro Informacion en Internet, ni en foros......

    ResponderEliminar
  4. Hola, Asier, disculpa que te moleste, quisiera hacerte una consulat si fuere factible.............existe alguna forma de llenar una sola Columna de varias de un Grid con el contenido de un TextBox (TextCalendar), que recoge la Fecha de un Objeto Calendar, despues de un Boton Aceptar???............Debo llenar una sola Columna de ese GridView.........

    Disculpa las molestias, te enviare un presente cuando que termine esto, mil millones de gracias, nos vemos,.,

    ResponderEliminar