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.
Wyzwanie
ŚredniUtwó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}");
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrznePrzestrzenie nazw i dyrektywyWprowadzenie do klas i obiektówSłowo kluczowe „this”Metody i parametryPola a właściwościKonstruktoryInicjalizatory obiektówPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawowa składnia dziedziczenia (:)Słowo kluczowe 'base'Słowa kluczowe virtual i overrideKlasy sealedBazowa klasa 'object'Powtórzenie – hierarchia pracowników7Zaawansowane funkcje
Przeciążanie operatorówIndeksery (this[])Nadpisywanie ToString()Metody rozszerzającePodsumowanie – własna lista2Właściwości i składowe statyczne
Właściwości automatyczneWłaściwości tylko do odczytu i zapisuPola i metody statyczneKlasy statyczneSkładowe z ciałem wyrażeniowym5Polimorfizm i interfejsy
Polimorfizm czasu kompilacji a czasu wykonaniaInterfejs a klasa abstrakcyjnaWiele interfejsówJawne implementowanie interfejsówRzutowanie w górę i w dółPowtórka — kalkulator kształtów8Zaawansowane koncepcje OOP
Kompozycja zamiast dziedziczeniaTypy generyczne (klasy i metody)Delegaty i zdarzeniaAtrybuty i refleksjaIDisposable i instrukcja usingPodstawy wstrzykiwania zależności11Wzorce projektowe, część 2
Wzorzec poleceniaWzorzec adapteraWzorzec dekoratoraWzorzec metody szablonowejWzorzec stanuWzorzec kompozytu3Architektura klas
Dane instancji a dane statyczneSłowa kluczowe 'readonly' i 'const'Pola zapasowePowtórzenie — menedżer kont bankowych6Hermetyzacja
Modyfikatory dostępuWłaściwości w hermetyzacjiImplementacja ukrywania danychWzorce niezmiennościPowtórka — dane studentów9Argumenty zmiennej liczby
Słowo kluczowe „params”Parametry opcjonalneArgumenty nazwanePrzeciążanie metodPoćwicz samodzielnie: Kompilator C# online