86 - Creando un objeto e iniciando sus propiedades inmediatamente


Hemos visto en conceptos anteriores que cuando se crea un objeto lo primero que sucede es la ejecución del constructor.

Veremos ahora que en el momento de crear un objeto podemos iniciar una o varias de sus propiedades.

Problema 1:

Plantear una clase llamada Triangulo. Por defecto el valor de cada lado del triángulo es 5. Calcular el perímetro.

Programa:

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

namespace Propiedades2
{
    class Triangulo
    {
        public int Lado1 { get; set; } = 5;
        public int Lado2 { get; set; } = 5;
        public int Lado3 { get; set; } = 5;

        public int RetornarPerimetro()
        {
            return Lado1 + Lado2 + Lado3;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {        
            Triangulo triangulo1 = new Triangulo { Lado1 = 10, Lado2 = 20, Lado3 = 30 };
            Console.WriteLine(triangulo1.RetornarPerimetro());
            Triangulo triangulo2 = new Triangulo { Lado3 = 30 };
            Console.WriteLine(triangulo2.RetornarPerimetro());
            Console.ReadKey();
        }
    }
}

Definimos tres propiedades, una para cada lado del triángulo:

        public int Lado1 { get; set; } = 5;
        public int Lado2 { get; set; } = 5;
        public int Lado3 { get; set; } = 5;

Luego cuando creamos un objeto de la clase Triangulo debemos indicar entre llaves los nombres de las propiedades y los valores que se deben asignar, no es obligatorio tener que inicializar todas las propiedades:

            Triangulo triangulo1 = new Triangulo { Lado1 = 10, Lado2 = 20, Lado3 = 30 };
            Console.WriteLine(triangulo1.RetornarPerimetro());
            Triangulo triangulo2 = new Triangulo { Lado3 = 30 };
            Console.WriteLine(triangulo2.RetornarPerimetro());

Tiene como resultado en pantalla:

creacion de objetos e iniciando propiedades

Es importante notar que si la clase tiene constructor primero se ejecuta este y luego se inician las propiedades.

Por ejemplo una variación del programa anterior con un constructor:

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

namespace Propiedades2
{
    class Triangulo
    {
        public int Lado1 { get; set; } = 5;
        public int Lado2 { get; set; } = 5;
        public int Lado3 { get; set; } = 5;

        public Triangulo(string titulo)
        {
            Console.WriteLine(titulo);
            Lado1=1;
            Lado2=1;
            Lado3=1;
        }

        public int RetornarPerimetro()
        {
            return Lado1 + Lado2 + Lado3;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {        
            Triangulo triangulo1 = new Triangulo("Perimetro triangulo 1") { Lado1 = 10, Lado2 = 20, Lado3 = 30 };
            Console.WriteLine(triangulo1.RetornarPerimetro());
            Triangulo triangulo2 = new Triangulo("Perimetro triangulo 2") { Lado3 = 30 };
            Console.WriteLine(triangulo2.RetornarPerimetro());
            Console.ReadKey();
        }
    }
}

Tiene como resultado en pantalla:

creacion de objetos e iniciando propiedades

Primero se ejecuta el contructor donde se muestra el string que le pasamos como parámetro y seguidamente se inician las propiedades Lado1, Lado2 y Lado3:

            Triangulo triangulo1 = new Triangulo("Perimetro triangulo 1") { Lado1 = 10, Lado2 = 20, Lado3 = 30 };

Si bien en el constructor iniciamos las propiedades con el valor 1, luego le asignamos los valores 10,20 y 30 (estos son los que quedan en definitiva)


Retornar