Constructores en C#

Cada vez que se crea una clase o estructura, se llama a su constructor. Una clase o estructura puede tener varios constructores que toman argumentos diferentes. Los constructores permiten al programador establecer valores predeterminados, limitar la creación de instancias y escribir código flexible y fácil de leer.

En C# podemos definir un método que se ejecute inicialmente y en forma automática. Este método se lo llama constructor.

El constructor tiene las siguientes características:
  • Tiene el mismo nombre de la clase.
  • Es el primer método que se ejecuta.
  • Se ejecuta en forma automática.
  • No puede retornar datos.
  • Se ejecuta una única vez.
  • Un constructor tiene por objetivo inicializar atributos.

Sintaxis de un Constructor en C#

Modificador NombredelaClase (Parámetros)
{
   Instrucciones
}

Veamos un Ejemplo de un constructor en C#

using System;

namespace constructores
{
    class EjConstructor
    {
        int a;
        int b;
        //declaramos el constructor
        public EjConstructor(int x, int y)
        {
            a = x;
            b = y;
        }
        public int Suma()
        {
            return a + b;
        }

        public int resta()
        {
            return a - b;
        }

        class Principal
        {
            static void Main(string[] args)
            {
                //creamos objeto de la clase y le pasamos los parametros al constructor
                EjConstructor obj = new EjConstructor(10, 20);
                Console.WriteLine("La suma es: "+obj.Suma());
                Console.WriteLine("La resta es: "+obj.resta());
                Console.ReadKey();
            }
        }
    }
}

Al ejecutar el código muestra el siguiente resultado


El ejemplo es sencillo para que pueda comprenderse creamos una clase EjConstructor con 2 variables enteras, luego definimos el constructor con 2 parámetros observen que tiene el mismo nombre de la clase eso tiene que ser así obligatoriamente, también tenemos un método Suma y un método resta que lo único que hace es realizar una suma y la resta sucesivamente.Luego en la clase Principal al momento de crear el objeto de la clase le pasamos los parámetros de una sola vez al constructor, y después solo imprimimos el resultado de la suma y la resta del método Suma y resta.

Ejercicios Resueltos de Constructores en C# 

Ejemplo 1

Realizar un programa que ingrese los sueldos de 5 operarios en un vector. Realizar la creación y carga del vector en el constructor.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PruebaConstructor
{
    class Operarios
    {
        private int[] sueldos;

        public Operarios()
        {
            sueldos = new int[5];
            for (int f = 0; f < sueldos.Length; f++)
            {
                Console.Write("Ingrese el sueldo "+(f+1)+": ");
                string linea = Console.ReadLine();
                sueldos[f] = int.Parse(linea);
            }
        }

        public void Imprimir()
        {
            Console.WriteLine("Los Sueldos Ingresados.");
            for (int f = 0; f < sueldos.Length; f++)
            {
                Console.WriteLine(sueldos[f]);
            }
            Console.ReadKey();
        }

        static void Main(string[] args)
        {
            Operarios op = new Operarios();
            op.Imprimir();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado


Explicación: 
Como la clase se llama Operarios el constructor tiene el mismo nombre, no disponemos la palabra clave void ya que el constructor no puede retornar datos.

La ventaja de plantear un constructor en lugar de definir un método con cualquier nombre es que se llamará en forma automática cuando se crea un objeto de esta clase:
            Operarios op = new Operarios();

Cuando se crea el objeto op se llama al método constructor.
Finalmente llamamos al método imprimir:
            op.Imprimir();

Ejemplo 2

Plantear una clase llamada Alumno y definir como atributos su nombre y su edad. En el constructor realizar el ingreso de datos. Definir otros dos métodos para imprimir los datos ingresados y un mensaje si es mayor o no de edad (edad >=18)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PruebaConstructor
{
    class Alumno
    {
        private string nombre;
        private int edad;

        public Alumno()
        {
            Console.Write("Ingrese nombre:");
            nombre = Console.ReadLine();
            Console.Write("Ingrese edad:");
            string linea = Console.ReadLine();
            edad = int.Parse(linea);
        }

        public void Imprimir()
        {
            Console.WriteLine("Nombre:" + nombre);
            Console.WriteLine("Edad:" + edad);
        }

        public void EsMayorEdad()
        {
            if (edad >= 18)
            {
                Console.Write(nombre + " es mayor de edad.");
            }
            else
            {
                Console.Write(nombre + " no es mayor de edad.");
            }
        }

        static void Main(string[] args)
        {
            Alumno alumno1 = new Alumno();
            alumno1.Imprimir();
            alumno1.EsMayorEdad();
            Console.ReadKey();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado



Explicación: 
En la main el constructor se llama en forma automática cuando creamos un objeto de la clase Alumno:
        static void Main(string[] args)
        {
            Alumno alumno1 = new Alumno();

Los otros dos métodos deben llamarse por su nombre y en el orden que necesitemos:
            alumno1.Imprimir();
            alumno1.EsMayorEdad();


10 comentarios:

  1. Fue de mucha ayuda y gran comprensión sus ejemplos muchas gracias.

    ResponderEliminar
  2. Muy bueno todo. Tengo una duda, ¿cuando se usaría en si el constructor? Porque he visto ejercicios sin parámetros, o ejercicios con parámetros. Por ejemplo estos ejercicios que haces, ¿porque usas el for dentro del constructor y no lo usas en otro método? O simplemente no usar el constructor, eso me tiene un poco confundido. Saludos!!

    ResponderEliminar
    Respuestas
    1. Usa los for dentro del constructor para tener ejemplos prácticos y puedas apreciar como el constructor se llama al instanciar la clase, solo quédate con el concepto de que el constructor se utiliza para inicializar los atributos de tu clase por ejemplo en una tienda online tal vez te convenga inicializar la moneda dependiendo de que país sea el cliente, en cuanto a tu duda de que cuando se utiliza el constructor, no es que quieres usarlo o no, el constructor se ejecuta inevitablemente, de hecho si no lo pones tu en tu código eso no quiere decir que no lo estas usando, simplemente está implícito, por lo seria los mismo ponerlo o no, en este ejemplo especifico.

      Eliminar
  3. In my opinion, we all have to have an open mind in order to face the environmental contingency in the most responsible way, since we can all help each other by being sources and support issues, both towards teachers and students, since it is not the same with just trying to explain the extra video tasks.

    ResponderEliminar
  4. Muy útil. Gracias por compartir.

    ResponderEliminar