Start Debugging

C# 14 Features

Was in C# 14 wirklich ausgeliefert wurde, mit Code.

Dieses Thema indexiert alles, was ich über die Sprachfeatures von C# 14 geschrieben habe: Union Types, partial-Konstruktoren und -Events, Extension Types, und die kleineren ergonomischen Verbesserungen, die man in den offiziellen Release Notes leicht übersieht.

Womit anfangen

Starten Sie mit den Beiträgen zu Union Types und partial-Mitgliedern, wenn Sie von C# 12 kommen - das sind die größten Verhaltensänderungen. Alles andere ist Ergonomie.

Was auf dieser Seite steht

Die Liste unten sammelt automatisch alle Beiträge mit einem der Tags: c# 14, csharp 14, c#, csharp, c# language. Neueste zuerst.

Index (217 Beiträge)

2026 / 07

  • So fügen Sie Response-Komprimierung zu einer ASP.NET Core 11 API hinzu

    Ein vollständiger Leitfaden zur Response-Komprimierung in ASP.NET Core 11: AddResponseCompression und UseResponseCompression, der neue integrierte Zstandard-Provider neben Brotli und Gzip, Komprimierungsstufen, EnableForHttps und das CRIME/BREACH-Risiko, benutzerdefinierte MIME-Typen, die Middleware-Reihenfolge und wann Sie es dem Reverse-Proxy überlassen sollten.

  • Wie man eine typisierte Results<T1, T2>-Union aus einem Minimal-API-Endpunkt in ASP.NET Core 11 zurückgibt

    Deklarieren Sie den Rückgabetyp des Handlers als Results<Ok<T>, NotFound> und geben Sie TypedResults.Ok / TypedResults.NotFound zurück: Die Union bietet eine Prüfung zur Kompilierzeit, dass der Handler nur zurückgibt, was er deklariert, und beschreibt sich selbst gegenüber OpenAPI, sodass Sie .Produces nie von Hand schreiben. Behandelt asynchrone Handler, das Sechs-Typen-Limit und Tests in ASP.NET Core 11.

  • Output Caching zu einer Minimal API in ASP.NET Core 11 hinzufügen

    Ein vollständiger, funktionierender Leitfaden zum Output Caching in einer ASP.NET Core 11 Minimal API: AddOutputCache und UseOutputCache, CacheOutput an Endpunkten und MapGroup, benannte und Basis-Policies, Expire, VaryByQuery und VaryByHeader, Tag-basierte Invalidierung mit EvictByTagAsync, Schutz vor Cache-Stampede, ETag-Revalidierung und ein Redis-Backing-Store.

  • OpenAPI-Dokument mit AddOperationTransformer und AddSchemaTransformer in ASP.NET Core 11 anpassen

    Ein tiefer Einblick in die eingebaute OpenAPI-Transformer-Pipeline in .NET 11: Operation- vs. Schema-Transformer, die Kontextobjekte, die Ausführungsreihenfolge, DI-aktivierte Transformer sowie Rezepte für Header, Antworten, Beispiele und Anpassungen pro Eigenschaft.

  • .NET 11 Runtime Async verzichtet auf das Flag EnablePreviewFeatures

    Wahrend die .NET-11-Vorschauversionen auf das November-Release zusteuern, ist Runtime Async erwachsen geworden: net11.0-Projekte aktivieren es uber eine einzige MSBuild-Eigenschaft, und die Laufzeitbibliotheken selbst werden nun damit kompiliert.

  • Was ist PGO in .NET und muss ich es aktivieren?

    PGO (profilgesteuerte Optimierung) lässt den .NET-JIT den heißen Code für die Typen und Verzweigungen spezialisieren, die Ihre Arbeitslast tatsächlich trifft. Dynamic PGO ist seit .NET 8 standardmäßig aktiviert, daher müssen Sie es unter .NET 8 und höher nicht aktivieren. Hier erfahren Sie, was es tut, wie Sie seine Wirkung sehen und in welchen seltenen Fällen Sie an der Einstellung drehen.

  • Was ist Tiered Compilation und wie denke ich darüber nach?

    Tiered Compilation ermöglicht es dem .NET-JIT, jede Methode zweimal zu kompilieren: zuerst schnell und unoptimiert, damit Ihre Anwendung startet, und dann erneut mit vollständigen Optimierungen, sobald die Laufzeit weiß, dass eine Methode heiß ist. Hier erfahren Sie, wie Tier 0, Tier 1, On-Stack-Replacement und Dynamic PGO zusammenpassen und wie Sie sie beobachten und einstellen.

  • Was ist der IHostedService-Vertrag und wann verwende ich ihn?

    IHostedService ist das Interface mit zwei Methoden (StartAsync/StopAsync), das der generische Host von .NET beim Start und beim geordneten Herunterfahren aufruft. Hier steht, was der Vertrag zusichert, wann Sie ihn direkt implementieren und welche Verhaltensanderungen in .NET 10 und 11 fur Uberraschungen sorgen.

  • Was ist trim-sicherer Code und wie schreibe ich ihn?

    Trim-sicherer Code ist Code, dessen Erreichbarkeit der .NET-Trimmer statisch beweisen kann, sodass er erhalten bleibt, wenn ungenutzter Code aus einer eigenständigen App entfernt wird. Dies ist die praktische Anleitung: Aktivieren Sie den Analyzer, treiben Sie jede IL2xxx-Warnung auf null, annotieren Sie Reflection mit DynamicallyAccessedMembers, propagieren Sie RequiresUnreferencedCode an öffentliche APIs und ersetzen Sie nicht analysierbare Muster durch Source Generatoren.

  • Lösung: CS9035 "Required member 'X' must be set in the object initializer" in C#

    CS9035 bedeutet, dass ein als required markiertes Member nicht zugewiesen wurde. Weisen Sie es im Objektinitialisierer zu, oder fügen Sie einen mit [SetsRequiredMembers] annotierten Konstruktor hinzu, der jedes required-Member setzt.

  • Validierungsfehler-Antworten in Minimal APIs mit IProblemDetailsService in ASP.NET Core 11 anpassen

    Rufen Sie AddProblemDetails mit einem CustomizeProblemDetails-Callback auf, um die 400 umzuformen, die die integrierte Minimal-API-Validierung in ASP.NET Core 11 zurückgibt: fügen Sie eine traceId hinzu, schreiben Sie den title um, wechseln Sie von 400 zu 422 oder übernehmen Sie mit einem eigenen IProblemDetailsWriter die volle Kontrolle.

  • JWT-Bearer-Authentifizierung in einer Minimal API in ASP.NET Core 11 einrichten

    Eine vollständige, funktionierende Einrichtung der JWT-Bearer-Authentifizierung in einer Minimal API in ASP.NET Core 11: das Paket installieren, AddAuthentication().AddJwtBearer() verdrahten, ein Token ausstellen, Endpunkte mit RequireAuthorization schützen, Rollen- und Claim-Richtlinien hinzufügen und alles mit dotnet user-jwts testen.

  • Benannte Query-Filter für Soft Delete und Multi-Tenancy in EF Core 11 verwenden

    Wenden Sie zwei unabhängige globale Query-Filter auf dieselbe Entität in EF Core 11 an: einen Soft-Delete-Filter und einen Tenant-Filter, jeweils benannt, sodass Sie einen ohne den anderen per IgnoreQueryFilters deaktivieren können.

  • IAsyncDisposable mit await using in C# implementieren und konsumieren

    Ein vollständiger Leitfaden zu IAsyncDisposable in C#: wann await using zu verwenden ist, wie DisposeAsync und DisposeAsyncCore korrekt geschrieben werden und welche Stacking- und ConfigureAwait-Details Ressourcen lecken lassen.

  • Wie man ein CancellationToken durch async-Methoden in .NET 11 propagiert

    Führen Sie ein CancellationToken sauber durch jede Schicht einer async-Aufrufkette in .NET 11: Konvention des letzten Parameters, Standardwerte, verknüpfte Tokens, RequestAborted von ASP.NET Core und der CA2016-Analyzer, der die vergessenen findet.

  • Asynchrone Operationen in C# mit CancellationTokenSource.CancelAfter zeitlich begrenzen

    CancellationTokenSource.CancelAfter für asynchrone Deadlines in .NET 11: Konstruktor vs. CancelAfter, verknüpfte Token, Ausnahmebehandlung, Task.WaitAsync, TryReset für Pooling und testbare Timeouts mit TimeProvider.

2026 / 06

2026 / 05

2026 / 04

2026 / 02

2026 / 01

2025 / 04

2025 / 01

  • .NET-Performance: ToList vs. ToArray

    .NET 9 verbessert die ToArray-Performance deutlich durch InlineArray und macht es schneller und speicherschonender als ToList. Sehen Sie sich Benchmarks an, die .NET 8 mit .NET 9 vergleichen.

  • C# 13: params-Collections mit jedem erkannten Sammlungstyp verwenden

    C# 13 erweitert den params-Modifier über Arrays hinaus, um Span, ReadOnlySpan, IEnumerable und andere Sammlungstypen zu unterstützen, was Boilerplate reduziert und die Flexibilität erhöht.

  • Wie man auf C# 13 umstellt

    Wie Sie 'Feature is not available in C# 12.0' beheben und Ihr Projekt auf C# 13 umstellen, indem Sie das Target Framework ändern oder LangVersion in Ihrer .csproj-Datei setzen.

2024 / 12

  • Was ist neu in C# 14.0

    Eine Übersicht aller neuen Funktionen in C# 14.0, einschließlich des field-Schlüsselworts, Erweiterungsmember, null-bedingter Zuweisung, impliziter Span-Konvertierungen und mehr.

  • Versionsgeschichte der Sprache C#

    Die Entwicklung von C# hat es in eine moderne, leistungsstarke Sprache verwandelt. Dieser Leitfaden zeichnet jeden wichtigen Meilenstein nach. Die Anfangsjahre (C# 1.0 - 1.2). C# wurde 2002 als Hauptsprache für das .NET Framework eingeführt. Es fühlte sich wie Java an, jedoch mit Fokus auf Windows-Entwicklung. Version 1.2 kam kurz darauf mit kleinen...

2023 / 11

2023 / 10

  • C# Wie Sie Features als experimentell kennzeichnen

    Ab C# 12 lassen sich Typen, Methoden, Properties oder Assemblies mit dem neuen ExperimentalAttribute als experimentell markieren. Erfahren Sie, wie Sie es mit diagnosticId, pragma-Tags und UrlFormat einsetzen.

  • C# ref readonly-Parameter

    Der ref readonly-Modifier in C# bietet eine transparentere Möglichkeit, schreibgeschützte Referenzen zu übergeben. Erfahren Sie, wie er den in-Modifier mit besseren Einschränkungen und mehr Sichtbarkeit für den Aufrufer verbessert.

  • C# Wie mischt man ein Array?

    Der einfachste Weg, ein Array in C# zu mischen, ist Random.Shuffle, eingeführt in .NET 8. Es arbeitet in-place und funktioniert sowohl mit Arrays als auch mit Spans.

  • C# Was ist eine NullReferenceException und wie behebt man sie?

    Erfahren Sie, was eine NullReferenceException in C# auslöst, wie Sie sie debuggen und mit Null-Prüfungen, dem null-conditional Operator und nullbaren Referenztypen vermeiden.

  • TypeInfoResolver zu bestehenden JsonSerializerOptions hinzufügen/entfernen

    Erfahren Sie, wie Sie TypeInfoResolver-Instanzen mit der neuen TypeInfoResolverChain-Eigenschaft in .NET 8 zu bestehenden JsonSerializerOptions hinzufügen oder daraus entfernen.

  • C# 12 Interceptors

    Lernen Sie C# 12 Interceptors kennen, ein experimentelles Compiler-Feature in .NET 8, mit dem Sie Methodenaufrufe zur Compile-Zeit über das InterceptsLocation-Attribut ersetzen können.

2023 / 09

2023 / 08

  • C# 12 Inline Arrays

    Inline Arrays ermöglichen es, ein Array fester Größe innerhalb eines struct-Typs anzulegen. Eine solche Struct mit Inline-Buffer sollte eine Leistung erreichen, die mit einem unsafe Fixed-Size-Buffer vergleichbar ist. Inline Arrays sind in erster Linie für das Runtime-Team und einige Bibliotheksautoren gedacht, um in bestimmten Szenarien die Performance zu verbessern. Sie...

  • C# 12 Collection Expressions

    C# 12 bringt eine neue, vereinfachte Syntax zum Erstellen von Arrays. Sie sieht so aus: Wichtig: Der Array-Typ muss explizit angegeben werden, var lässt sich für die Variablendeklaration also nicht verwenden. Genauso können Sie ein Span<int> erstellen: Mehrdimensionale Arrays Die Vorteile dieser knappen Syntax...

  • C# Wie warten Sie, bis ein Prozess endet?

    Mit der Methode WaitForExit können Sie auf das Ende eines Prozesses warten. Ihr Code wartet synchron, bis der Prozess fertig ist, und führt dann die Ausführung fort. Sehen wir uns ein Beispiel an: Der Code oben startet einen neuen cmd.exe-Prozess und führt den Befehl timeout 5 aus. Der Aufruf process.WaitForExit() zwingt Ihr Programm...

  • C# 12 Alias für beliebige Typen

    Die using-alias-Direktive wurde in C# 12 gelockert, sodass Alias für beliebige Typen vergeben werden können, nicht nur für benannte Typen. Damit lassen sich nun Tuples, Pointer, Array-Typen, generische Typen usw. mit Aliasen versehen. Statt der vollständigen strukturellen Form eines Tuples können Sie einen kurzen, aussagekräftigen Aliasnamen verwenden...

  • Gibt es in C# ein Äquivalent zur With...End With-Anweisung?

    Die With...End With-Anweisung in VB führt eine Reihe von Anweisungen aus, die sich wiederholt auf ein einziges Objekt beziehen, mit einer vereinfachten Syntax für den Zugriff auf dessen Member. Gibt es in C# ein Äquivalent? Nein. Am nächsten kommen Objektinitialisierer, die jedoch nur beim Erzeugen neuer Objekte funktionieren.

2023 / 07

  • C# 12 - Primärkonstruktoren

    Ab C# 12 lassen sich Primärkonstruktoren in Klassen und Structs definieren. Die Parameter werden in Klammern direkt nach dem Typnamen angegeben. Sie haben einen weiten Geltungsbereich: Sie können Eigenschaften oder Felder initialisieren, als Variablen in Methoden oder lokalen Funktionen dienen und an einen Basiskonstruktor übergeben werden.

2023 / 06

  • Wie Sie mit der Programmierung in C# beginnen

    Ein Einsteigerleitfaden für den Einstieg in die Programmierung mit C#, von der Einrichtung von Visual Studio über das Schreiben Ihres ersten Programms bis hin zu Lernressourcen.

  • Wie Sie zu C# 12 wechseln

    Beheben Sie C#-12-Sprachversionsfehler, indem Sie Ihr Target Framework auf .NET 8 aktualisieren oder LangVersion in Ihrer .csproj-Datei setzen.

  • Was ist neu in C# 12

    Ein Überblick über die neuen Features in C# 12, darunter Primärkonstruktoren, Standard-Lambda-Parameter, Collection Expressions, Inline Arrays und mehr.

2023 / 05

2023 / 03

2020 / 11

2020 / 05

  • C# using var (using-Deklaration)

    Verwenden Sie die using-Deklarationen in C# 8 (`using var`), um IDisposable-Objekte ohne verschachtelte geschweifte Klammern freizugeben. Syntax, Geltungsbereichsregeln und wann `using`-Blöcke vorzuziehen sind.

2020 / 04

  • C# 8.0 Null-Coalescing-Zuweisung ??=

    Erfahren Sie, wie der Null-Coalescing-Zuweisungsoperator (??=) in C# 8.0 funktioniert, mit praktischen Beispielen wie Caching und bedingten Zuweisungen.

2019 / 01

2013 / 10

2013 / 06

2013 / 05

2012 / 01

Alle Themen Startseite