Objektinitialisierer
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy. Lektion 8 von 70.
Objektinitialisierer bieten eine praktische Möglichkeit, beim Erstellen eines Objekts Eigenschaftswerte festzulegen, ohne einen Konstruktor mit vielen Parametern aufzurufen.
Traditionelle Methode mit Konstruktor
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";Verwendung der Objektinitialisierersyntax
Person person = new Person
{
Name = "Alice",
Age = 25,
City = "New York"
};Objektinitialisierer mit Konstruktoren
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
public Person(string name)
{
Name = name;
}
}
// Der Konstruktor setzt Name, der Initialisierer setzt die anderen Eigenschaften
Person person = new Person("Bob")
{
Age = 30,
City = "London"
};Verschachtelte Objektinitialisierer
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"
}
};Mehrere Objekte mit Initialisierern erstellen
Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };
Person person3 = new Person { Name = "Charlie", Age = 35 };Objektinitialisierer machen den Code übersichtlicher und besser lesbar. Die Eigenschaften werden festgelegt, nachdem der Konstruktor ausgeführt wurde. Du kannst Initialisierer mit oder ohne Konstruktorparameter verwenden, wodurch die Objekterstellung flexibel und kompakt wird.
Aufgabe
MittelErstelle drei Student-Objekte mit verschiedenen Ansätzen zur Objektinitialisierung:
- student1: Verwende den Standardkonstruktor mit einem Objektinitialisierer, um alle Eigenschaften (Name, StudentId, Major, GPA) aus der Eingabe festzulegen
- student2: Verwende einen Objektinitialisierer, um nur Name = "Bob" und Major = "Engineering" festzulegen
- student3: Verwende den Konstruktor mit "Charlie" als Parameter und anschließend einen Objektinitialisierer, um StudentId = 54321, Major = "Mathematics" und GPA = 3.5 festzulegen
Probier es selbst
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: Erstelle student1 mit einem Objektinitialisierer und allen Eigenschaften
// Verwende den Standardkonstruktor und setze Name, StudentId, Major und GPA
// TODO: Erstelle student2 mit einem Objektinitialisierer, der nur Name und Major setzt
// Name soll "Bob" sein, Major soll "Engineering" sein
// TODO: Erstelle student3 mit dem Konstruktor und dem Namensparameter "Charlie"
// Verwende dann einen Objektinitialisierer, um StudentId = 54321, Major = "Mathematics" und GPA = 3.5 zu setzen
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}");
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjektinitialisiererWiederholung – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbungs-(:)-SyntaxDas „base“-Schlüsselwort„virtual“- und „override“-SchlüsselwörterVersiegelte KlassenDie „object“-BasisklasseWiederholung – Mitarbeiterhierarchie7Erweiterte Funktionen
Überladen von OperatorenIndexer (this[])ToString()-ÜberschreibungErweiterungsmethodenRückblick – Benutzerdefinierte Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterThread-sicheres SingletonFactory-MusterObserver-Muster (Events)Strategy-Muster13Abschließende Herausforderungen
E-Learning-PlattformKomponente für SpielfigurenFahrzeugvermietungsdienst2Eigenschaften & statische Member
Automatisch implementierte EigenschaftenNur lesbare/schreibbare EigenschaftenStatische Felder & MethodenStatische KlassenMember mit Ausdruckskörpern5Polymorphie & Interfaces
Compile- vs. Laufzeit-PolymorphieInterface vs. abstrakte KlasseMehrere InterfacesExplizite InterfacesUpcasting & DowncastingWiederholung – Formenrechner3Klassenarchitektur
Instanz- vs. statische DatenSchlüsselwörter 'readonly' & 'const'Backing FieldsRückblick – Bankkontenverwaltung6Kapselung
ZugriffsmodifikatorenEigenschaften zur KapselungImplementierung der DatenkapselungMuster für UnveränderlichkeitRückblick – SchülerdatenÜbe selbstständig: Online-C#-Compiler