Menu
Coddy logo textTech

Inicjalizatory obiektów

Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 8 z 70.

Inicjalizatory obiektów to wygodny sposób ustawiania wartości właściwości podczas tworzenia obiektu, bez wywoływania konstruktora z wieloma parametrami.

Tradycyjny sposób z użyciem konstruktora

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";

Używanie składni inicjalizatora obiektu

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

Inicjalizatory obiektów z konstruktorami

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

// Konstruktor ustawia Name, inicjalizator ustawia pozostałe właściwości
Person person = new Person("Bob")
{
    Age = 30,
    City = "London"
};

Zagnieżdżone inicjalizatory obiektów

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"
    }
};

Tworzenie wielu obiektów za pomocą inicjalizatorów

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

Inicjalizatory obiektów sprawiają, że kod jest czystszy i bardziej czytelny. Właściwości są ustawiane po wykonaniu konstruktora. Możesz używać inicjalizatorów z parametrami konstruktora lub bez nich, dzięki czemu tworzenie obiektów jest elastyczne i zwięzłe.

challenge icon

Wyzwanie

Średni

Utwórz trzy obiekty Student, używając różnych podejść do inicjalizowania obiektów:

  • student1: Użyj konstruktora domyślnego z inicjalizatorem obiektu, aby ustawić wszystkie właściwości (Name, StudentId, Major, GPA) na podstawie danych wejściowych
  • student2: Użyj inicjalizatora obiektu, aby ustawić tylko Name = "Bob" i Major = "Engineering"
  • student3: Użyj konstruktora z parametrem "Charlie", a następnie użyj inicjalizatora obiektu, aby ustawić StudentId = 54321, Major = "Mathematics", GPA = 3.5

Spróbuj swoich sił

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: Utwórz student1 za pomocą inicjalizatora obiektu, ustawiając wszystkie właściwości
        // Użyj konstruktora domyślnego i ustaw Name, StudentId, Major oraz GPA
        
        // TODO: Utwórz student2 za pomocą inicjalizatora obiektu, ustawiając tylko Name i Major
        // Name powinno mieć wartość "Bob", a Major wartość "Engineering"
        
        // TODO: Utwórz student3 za pomocą konstruktora z parametrem name o wartości "Charlie"
        // Następnie użyj inicjalizatora obiektu, aby ustawić 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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C# online