Objektinitialisierer
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy. Lektion 8 von 70.
Objektinitialisierer bieten eine bequeme Möglichkeit, Eigenschaftswerte beim Erstellen eines Objekts festzulegen, ohne einen Konstruktor mit vielen Parametern aufzurufen.
Traditionelle Art unter Verwendung eines Konstruktors
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 Objektinitialisierer-Syntax
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 andere 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"
}
};Erstellen mehrerer Objekte mit Initialisierern
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 sauberer und lesbarer. Die Eigenschaften werden festgelegt, nachdem der Konstruktor ausgeführt wurde. Sie können Initialisierer mit oder ohne Konstruktorparameter verwenden, was die Objekterstellung flexibel und prägnant macht.
Aufgabe
MittelErstelle drei Student-Objekte mithilfe verschiedener Ansätze für Objektinitialisierer:
- 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: Erstellen Sie student1 mit dem Objektinitialisierer und allen Eigenschaften
// Verwenden Sie den Standardkonstruktor und setzen Sie Name, StudentId, Major und GPA
// TODO: Erstellen Sie student2 mit dem Objektinitialisierer und nur Name und Major
// Name sollte "Bob" sein, Major sollte "Engineering" sein
// TODO: Erstellen Sie student3 mit dem Konstruktor und dem Namensparameter "Charlie"
// Verwenden Sie dann den Objektinitialisierer, um StudentId = 54321, Major = "Mathematics", 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