Objekt-Initialisierer
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
MittelErstellen Sie drei Student-Objekte unter Verwendung verschiedener Ansätze für Objektinitialisierer:
- student1: Verwenden Sie den Standardkonstruktor mit einem Objektinitialisierer, um alle Eigenschaften (Name, StudentId, Major, GPA) aus der Eingabe zu setzen
- student2: Verwenden Sie einen Objektinitialisierer, um nur Name = "Bob" und Major = "Engineering" zu setzen
- student3: Verwenden Sie den Konstruktor mit "Charlie" als Parameter und verwenden Sie dann einen Objektinitialisierer, um StudentId = 54321, Major = "Mathematics", GPA = 3.5 zu setzen
Spickzettel
Objektinitialisierer bieten eine bequeme Möglichkeit, Eigenschaftswerte beim Erstellen eines Objekts festzulegen:
Person person = new Person
{
Name = "Alice",
Age = 25,
City = "New York"
};Objektinitialisierer können mit Konstruktoren kombiniert werden:
Person person = new Person("Bob")
{
Age = 30,
City = "London"
};Verschachtelte Objektinitialisierer ermöglichen das Festlegen von Eigenschaften verschachtelter Objekte:
Person person = new Person
{
Name = "Charlie",
Address = new Address
{
Street = "123 Main St",
City = "Boston"
}
};Mehrere Objekte können prägnant erstellt werden:
Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };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. EigenschaftenKonstruktorenObjekt-InitialisiererZusammenfassung - Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (:) SyntaxDas 'base'-SchlüsselwortVirtual & Override SchlüsselwörterVersiegelte KlassenDie 'object'-BasisklasseZusammenfassung – Mitarbeiter-Hierarchie7Fortgeschrittene Funktionen
OperatorüberladungIndexer (this[])ToString() überschreibenErweiterungsmethodenZusammenfassung - Benutzerdefinierte Liste2Eigenschaften & Statische Member
Automatisch implementierte EigenschaftenRead-Only- & Write-Only-EigenschaftenStatische Felder & MethodenStatische KlassenExpression-Bodied Member5Polymorphismus & Interfaces
Compile- vs. Runtime-PolymorphismusInterface vs. abstrakte KlasseMehrfache InterfacesExplizite InterfacesUpcasting & DowncastingRecap – Shape Calculator3Klassenarchitektur
Instanz- vs. statische Daten'readonly' & 'const' SchlüsselwörterBacking FieldsZusammenfassung - Bankkonto-Manager6Kapselung
ZugriffsmodifikatorenProperties zur KapselungImplementierung von Data HidingImmutability-MusterRückblick – Studierendendaten