0Pricing
C# Academy · Lektion

Zieltypgesteuerte new-Ausdrücke

Vereinfachen Sie die Objekterstellung durch Zieltypinferenz.

Zieltypgesteuerte new-Ausdrücke ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.

Zieltypbestimmtes new

Seit C# 9 können Sie Type x = new(); schreiben und den Typ nach new weglassen, wenn der Zieltyp bekannt ist.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<int> numbers = new();
        numbers.Add(1);
        Console.WriteLine(numbers.Count);
    }
}

Redundanz vermeiden

Wenn die Variable den Typ bereits angibt, ist es überflüssig, ihn nach new zu wiederholen. Das leere new() vermeidet diese Wiederholung.

using System;
using System.Text;

class Program {
    static void Main() {
        StringBuilder sb = new();
        sb.Append("Hi");
        Console.WriteLine(sb.ToString());
    }
}

Konstruktorargumente übergeben

Zieltypbestimmtes new() akzeptiert weiterhin Konstruktorargumente innerhalb der Klammern.

using System;

class Point {
    public int X, Y;
    public Point(int x, int y) { X = x; Y = y; }
}
class Program {
    static void Main() {
        Point p = new(3, 4);
        Console.WriteLine(p.X + ", " + p.Y);
    }
}

Mit Objektinitialisierern

Sie können zieltypbestimmtes new mit einem Objektinitialisiererblock kombinieren.

using System;

class User {
    public string Name;
    public int Age;
}
class Program {
    static void Main() {
        User u = new() { Name = "Ann", Age = 30 };
        Console.WriteLine(u.Name + " " + u.Age);
    }
}

In Feldern

Zieltypbestimmtes new funktioniert auch bei Feldinitialisierern und hält Deklarationen dadurch knapp.

using System;
using System.Collections.Generic;

class Program {
    static List<string> items = new();
    static void Main() {
        items.Add("a");
        Console.WriteLine(items.Count);
    }
}

In Methodenargumenten

Wenn ein Parameter einen bekannten Typ hat, können Sie new() direkt als Argument übergeben.

using System;
using System.Collections.Generic;

class Program {
    static void Print(List<int> list) {
        Console.WriteLine(list.Count);
    }
    static void Main() {
        Print(new());
    }
}

new() zurückgeben

Wenn der Rückgabetyp einer Methode bekannt ist, können Sie new() zurückgeben, ohne den Typnamen zu wiederholen.

using System;
using System.Collections.Generic;

class Program {
    static List<int> Make() {
        return new() { 1, 2, 3 };
    }
    static void Main() {
        Console.WriteLine(Make().Count);
    }
}

Im Vergleich zu var

var x = new List<int>() gibt den Typ rechts an, während List<int> x = new() ihn links angibt. Wählen Sie die Variante, die sich besser liest.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        var a = new List<int>();
        List<int> b = new();
        Console.WriteLine(a.Count + b.Count);
    }
}

Mehrdeutigkeit ist ein Fehler

Wenn der Compiler den Zieltyp nicht bestimmen kann, schlägt new() fehl. Der Zieltyp muss sich eindeutig aus dem Kontext ergeben.

using System;

class Program {
    static void Main() {
        object o = new object();
        Console.WriteLine(o.GetType().Name);
    }
}

Lesbarkeit bei langen Typen

Zieltypbestimmtes new ist besonders bei ausführlichen generischen Typen praktisch, da der Typ nicht zweimal geschrieben werden muss.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        Dictionary<string, List<int>> map = new();
        map["a"] = new() { 1, 2 };
        Console.WriteLine(map["a"].Count);
    }
}

Ein moderner Stil

Zieltypbestimmtes new hält Deklarationen übersichtlich und bewahrt gleichzeitig die vollständige statische Typisierung und Compilerprüfungen.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        Queue<string> q = new();
        q.Enqueue("first");
        Console.WriteLine(q.Dequeue());
    }
}

Kurzer Test

Testen Sie Ihr Verständnis von zieltypbestimmten new-Ausdrücken.

Zusammenfassung

Zieltypbestimmtes new() ermöglicht es, den Typ nach new wegzulassen, wenn der Zieltyp bereits bekannt ist. Dadurch werden Wiederholungen in Deklarationen, Feldern, Argumenten und Rückgabewerten reduziert.

Es akzeptiert weiterhin Konstruktorargumente und Initialisierer, schlägt bei einem mehrdeutigen Typ fehl und ergänzt var als modernen, vollständig typsicheren Stil.

Häufig gestellte Fragen

Ist die Lektion „Zieltypgesteuerte new-Ausdrücke“ kostenlos?

Ja — der vollständige Text von „Zieltypgesteuerte new-Ausdrücke“ 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 „Zieltypgesteuerte new-Ausdrücke“?

Vereinfachen Sie die Objekterstellung durch Zieltypinferenz. 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 4 von 4.

Wie lange dauert die Lektion „Zieltypgesteuerte new-Ausdrücke“?

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. Typinferenz lokaler Variablen mit var
  2. Wann Sie var vermeiden sollten
  3. Der Typ dynamic
  4. Zieltypgesteuerte new-Ausdrücke
← Zurück zu C# Academy