Menu
Coddy logo textTech

Inicializadores de objetos

Parte de la sección Programación Orientada a Objetos del Journey de C# de Coddy — lección 8 de 70.

Los inicializadores de objetos proporcionan una forma conveniente de establecer valores de propiedad al crear un objeto, sin necesidad de llamar a un constructor con muchos parámetros.

Forma tradicional usando el constructor

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

Person person = new Person();
person.Name = "Alice";
person.Age = 25;
person.City = "New York";

Uso de la sintaxis de inicializador de objetos

Person person = new Person
{
    Name = "Alice",
    Age = 25,
    City = "New York"
};

Inicializadores de objetos con constructores

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
    
    public Person(string name)
    {
        Name = name;
    }
}

// El constructor establece Name, el inicializador establece otras propiedades
Person person = new Person("Bob")
{
    Age = 30,
    City = "London"
};

Inicializadores de objetos anidados

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
}

public class Person
{
    public string Name { get; set; }
    public Address Address { get; set; }
}

Person person = new Person
{
    Name = "Charlie",
    Address = new Address
    {
        Street = "123 Main St",
        City = "Boston"
    }
};

Creación de múltiples objetos con inicializadores

Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };
Person person3 = new Person { Name = "Charlie", Age = 35 };

Los inicializadores de objetos hacen que el código sea más limpio y legible. Las propiedades se establecen después de que se ejecuta el constructor. Puedes usar inicializadores con o sin parámetros de constructor, lo que hace que la creación de objetos sea flexible y concisa.

challenge icon

Desafío

Intermedio

Crea tres objetos Student usando diferentes enfoques de inicializadores de objetos:

  • student1: Usa el constructor predeterminado con un inicializador de objetos para establecer todas las propiedades (Name, StudentId, Major, GPA) desde la entrada
  • student2: Usa un inicializador de objetos para establecer solo Name = "Bob" y Major = "Engineering"
  • student3: Usa el constructor con "Charlie" como parámetro, luego usa un inicializador de objetos para establecer StudentId = 54321, Major = "Mathematics", GPA = 3.5

Hoja de referencia

Los inicializadores de objetos proporcionan una forma conveniente de establecer valores de propiedad al crear un objeto:

Person person = new Person
{
    Name = "Alice",
    Age = 25,
    City = "New York"
};

Los inicializadores de objetos se pueden combinar con constructores:

Person person = new Person("Bob")
{
    Age = 30,
    City = "London"
};

Los inicializadores de objetos anidados permiten establecer propiedades de objetos anidados:

Person person = new Person
{
    Name = "Charlie",
    Address = new Address
    {
        Street = "123 Main St",
        City = "Boston"
    }
};

Se pueden crear múltiples objetos de forma concisa:

Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };

Pruébalo tú mismo

using System;

class Program
{
    static void Main()
    {
        string name = Console.ReadLine();
        int studentId = int.Parse(Console.ReadLine());
        string major = Console.ReadLine();
        double gpa = double.Parse(Console.ReadLine());
        
        // TODO: Crear student1 usando el inicializador de objetos con todas las propiedades
        // Usar el constructor predeterminado y establecer Name, StudentId, Major y GPA
        
        // TODO: Crear student2 usando el inicializador de objetos solo con Name y Major
        // Name debe ser "Bob", Major debe ser "Engineering"
        
        // TODO: Crear student3 usando el constructor con el parámetro name "Charlie"
        // Luego usar el inicializador de objetos para establecer StudentId = 54321, Major = "Mathematics", GPA = 3.5
        
        Console.WriteLine($"Student 1: {student1.Name} (ID: {student1.StudentId}) - {student1.Major}, GPA: {student1.GPA}");
        Console.WriteLine($"Student 2: {student2.Name} (ID: {student2.StudentId}) - {student2.Major}, GPA: {student2.GPA}");
        Console.WriteLine($"Student 3: {student3.Name} (ID: {student3.StudentId}) - {student3.Major}, GPA: {student3.GPA}");
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos