0Pricing
C# Academy · Lektion

Objekt- und Collection-Initialisierer

Setzen Sie Properties bereits bei der Erstellung auf kompakte Weise.

Objekt- und Collection-Initialisierer ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist ein Objektinitialisierer?

Ein Objektinitialisierer legt öffentliche Eigenschaften oder Felder direkt nach new innerhalb von { } fest, ohne für jede Kombination einen eigenen Konstruktor zu schreiben.

using System;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var p = new Person { Name = "Ada", Age = 36 };
        Console.WriteLine(p.Name + ", " + p.Age);
    }
}

Initialisierersyntax

Listen Sie die durch Kommas getrennten Eigenschaftszuweisungen innerhalb der geschweiften Klammern auf. Sie werden ausgeführt, nachdem der Konstruktor abgeschlossen ist.

using System;

class Car
{
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }
}

class Program
{
    static void Main()
    {
        var car = new Car
        {
            Make = "Toyota",
            Model = "Corolla",
            Year = 2022
        };
        Console.WriteLine(car.Year + " " + car.Make + " " + car.Model);
    }
}

Konstruktor und Initialisierer kombinieren

Sie können einen Konstruktor aufrufen UND einen Initialisierer verwenden. Der Konstruktor wird zuerst ausgeführt, danach weist der Initialisierer die aufgeführten Eigenschaften zu.

using System;

class Widget
{
    public string Id { get; }
    public string Label { get; set; }

    public Widget(string id) { Id = id; }
}

class Program
{
    static void Main()
    {
        var w = new Widget("w1") { Label = "Submit" };
        Console.WriteLine(w.Id + ": " + w.Label);
    }
}

Nur einige Eigenschaften initialisieren

Sie listen nur die Eigenschaften auf, die Sie benötigen; die übrigen behalten ihre Standardwerte. Dadurch sind Initialisierer flexibel einsetzbar.

using System;

class Settings
{
    public bool DarkMode { get; set; } = false;
    public int Volume { get; set; } = 50;
    public string Lang { get; set; } = "en";
}

class Program
{
    static void Main()
    {
        var s = new Settings { DarkMode = true };
        Console.WriteLine(s.DarkMode + ", " + s.Volume + ", " + s.Lang);
    }
}

Collection-Initialisierer

Ein Collection-Initialisierer füllt beim Erstellen eine Liste, ein Set oder ein Array mithilfe von { } und durch Kommas getrennten Elementen.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var nums = new List<int> { 1, 2, 3, 4, 5 };
        Console.WriteLine("Count: " + nums.Count);
        Console.WriteLine("Sum: " + Sum(nums));
    }

    static int Sum(List<int> list)
    {
        int t = 0;
        foreach (var n in list) t += n;
        return t;
    }
}

Funktionsweise von Collection-Initialisierern

Der Compiler wandelt jedes Element in einen Aufruf von Add(...) um. Jeder Typ mit einer Add-Methode und IEnumerable unterstützt diese Syntax.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var names = new List<string> { "Ann", "Bob", "Cara" };
        foreach (var n in names)
            Console.WriteLine(n);
    }
}

Dictionary-Initialisierer

Dictionarys können mit Schlüssel-Wert-Paaren in geschweiften Klammern initialisiert werden – sehr praktisch für Nachschlagetabellen.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var ages = new Dictionary<string, int>
        {
            ["Ann"] = 30,
            ["Bob"] = 25
        };
        Console.WriteLine("Ann is " + ages["Ann"]);
    }
}

Verschachtelte Objektinitialisierer

Ein Objektinitialisierer kann verschachtelte Objekte initialisieren und so in einem Ausdruck einen kleinen Objektgraphen aufbauen.

using System;

class Address
{
    public string City { get; set; }
}

class Customer
{
    public string Name { get; set; }
    public Address Home { get; set; } = new Address();
}

class Program
{
    static void Main()
    {
        var c = new Customer
        {
            Name = "Lin",
            Home = new Address { City = "Tokyo" }
        };
        Console.WriteLine(c.Name + " in " + c.Home.City);
    }
}

Sammlungen von Objekten

Kombinieren Sie beide Funktionen: Initialisieren Sie eine Liste, deren Elemente ihrerseits mit Objektinitialisierern erstellt werden.

using System;
using System.Collections.Generic;

class Item
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}

class Program
{
    static void Main()
    {
        var cart = new List<Item>
        {
            new Item { Name = "Pen", Price = 1.5m },
            new Item { Name = "Book", Price = 9.0m }
        };
        decimal total = 0;
        foreach (var i in cart) total += i.Price;
        Console.WriteLine("Total: " + total);
    }
}

Initialisierer und init-Eigenschaften

Objektinitialisierer sind die Möglichkeit, Eigenschaften mit init festzulegen, da diese nur während der Initialisierung zugewiesen werden können.

using System;

class Config
{
    public string Env { get; init; }
    public int Retries { get; init; }
}

class Program
{
    static void Main()
    {
        var c = new Config { Env = "prod", Retries = 3 };
        Console.WriteLine(c.Env + " / " + c.Retries);
    }
}

Alles zusammenführen

Initialisierer machen die Erstellung deklarativ und gut lesbar, besonders bei Konfigurationsobjekten und Testdaten.

using System;
using System.Collections.Generic;

class Team
{
    public string Name { get; set; }
    public List<string> Members { get; set; } = new List<string>();
}

class Program
{
    static void Main()
    {
        var t = new Team
        {
            Name = "Alpha",
            Members = { "Ann", "Bob", "Cara" }
        };
        Console.WriteLine(t.Name + " has " + t.Members.Count + " members");
    }
}

Schnelltest

Testen Sie Ihr Verständnis von Initialisierern.

Zusammenfassung

Objektinitialisierer legen öffentliche Member in { } nach new fest und werden nach dem Konstruktor ausgeführt. Collection-Initialisierer fügen Elemente über implizite Aufrufe von Add hinzu, und Dictionarys unterstützen Schlüssel-Wert-Paare. Beide können verschachtelt werden, funktionieren mit Eigenschaften mit init und machen die Erstellung kurz und deklarativ.

using System;
using System.Collections.Generic;

class Demo
{
    public string Name { get; set; }
    public List<int> Nums { get; set; } = new List<int>();
}

class Program
{
    static void Main()
    {
        var d = new Demo { Name = "x", Nums = { 1, 2, 3 } };
        Console.WriteLine(d.Name + " " + d.Nums.Count);
    }
}

Häufig gestellte Fragen

Ist die Lektion „Objekt- und Collection-Initialisierer“ kostenlos?

Ja — der vollständige Text von „Objekt- und Collection-Initialisierer“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Objekt- und Collection-Initialisierer“?

Setzen Sie Properties bereits bei der Erstellung auf kompakte Weise. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Objekt- und Collection-Initialisierer“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Konstruktoren definieren
  2. Konstruktorverkettung mit this
  3. Objekt- und Collection-Initialisierer
  4. Statische Konstruktoren
← Zurück zu C# Academy