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 (138 Beiträge)
2026 / 05
- .NET 11 bringt deadlockfreie Erfassung von Prozessausgaben
.NET 11 Preview 4 liefert neue System.Diagnostics.Process-APIs, die stdout und stderr parallel leeren, plus Einzeiler-Helfer für Start-und-Erfassen sowie KillOnParentExit.
- Fix: A possible object cycle was detected
System.Text.Json weigert sich, Graphen mit Rückverweisen zu serialisieren. Setzen Sie ReferenceHandler.IgnoreCycles, projizieren Sie auf ein DTO oder markieren Sie den Rückzeiger mit [JsonIgnore]. Preserve ist letzte Wahl.
- Fix: SqlException: Timeout expired bei EF Core-Migrationen
Migrationen verwenden den Design-Time-DbContext, nicht Ihr Runtime-CommandTimeout. Setzen Sie das Timeout über UseSqlServer(o => o.CommandTimeout(...)), das Command Timeout in der Verbindungszeichenfolge oder Database.SetCommandTimeout vor Migrate().
- Fix: System.Text.Json.JsonException: The JSON value could not be converted
System.Text.Json wirft diese Exception, wenn das eingehende JSON-Token nicht zum CLR-Zieltyp passt. Passen Sie das JSON dem Typ an, oder registrieren Sie einen JsonConverter oder eine JsonSerializerOption, die beide verbindet.
- Fix: System.Security.Cryptography.CryptographicException: Keyset does not exist
Der private Schlüssel des Zertifikats liegt in einer separaten Windows-Schlüsseldatei, die die Prozessidentität nicht lesen kann. Setzen Sie die ACL, laden Sie das PFX mit MachineKeySet oder verwenden Sie EphemeralKeySet.
- Fix: System.IO.FileNotFoundException: Could not load file or assembly in einer veröffentlichten App
Läuft mit dotnet run, scheitert nach dotnet publish. Die DLL fehlt meist im Publish-Ordner, nicht im Runtime. Prüfen Sie deps.json, Private an ProjectReference und Trimming.
- Behebung: InvalidOperationException: Synchronous operations are disallowed
Ersetzen Sie den Aufruf von Stream.Read oder Write durch ReadAsync/WriteAsync. Als letztes Mittel setzen Sie AllowSynchronousIO bei Kestrel, IIS oder pro Anfrage über IHttpBodyControlFeature.
- Fix: RZ10012: Found markup element with unexpected name in Blazor
Der Razor-Compiler von Blazor gibt RZ10012 aus, wenn ein Tag in PascalCase keinen Komponententyp im Sichtbarkeitsbereich findet. Fügen Sie @using für den Namespace der Komponente in _Imports.razor hinzu oder @namespace in der Komponente und kompilieren Sie neu.
- Fix: dotnet ef migrations add scheitert mit 'Unable to create an object of type DbContext'
Die Design-Time-Tools von EF Core konnten Ihren DbContext nicht instanziieren. Stellen Sie einen Host über WebApplication.CreateBuilder bereit, verweisen Sie auf das richtige Startprojekt oder implementieren Sie IDesignTimeDbContextFactory.
- Fix: MSB3027 Could not copy X to Y. Exceeded retry count of 10. Failed
MSB3027 bedeutet, dass MSBuild eine Datei zehn Mal zu kopieren versuchte und ein Prozess das Ziel weiterhin gesperrt hielt. Beenden Sie den sperrenden Prozess, schließen Sie bin/obj aus dem Virenscanner aus oder erhöhen Sie CopyRetryCount.
- Fix: The type or namespace name 'X' could not be found (nach Hinzufügen einer ProjectReference)
CS0246 direkt nach einer frischen ProjectReference liegt fast immer an einem TargetFramework-Mismatch, einem veralteten obj/-Ordner oder einer fehlenden using-Direktive. Fünf Lösungen, nach Wahrscheinlichkeit geordnet.
- Fehler beheben: Cannot consume scoped service 'X' from singleton 'Y'
Die Scope-Validierung von ASP.NET Core wirft diese Ausnahme, wenn ein Singleton eine scoped Abhängigkeit über die gesamte Prozesslebensdauer einfangen würde. Machen Sie den Konsumenten scoped oder injizieren Sie IServiceScopeFactory und erstellen Sie bei Bedarf einen Scope.
- Fix: PlatformNotSupportedException: Operation is not supported on this platform unter Native AOT
Native AOT entfernt JIT und Interpreter, daher werfen Reflection Emit, Compile auf Expression-Bäumen und nicht gesehene MakeGenericType zur Laufzeit. Finden Sie den Aufruf über IL3050 und ersetzen Sie ihn durch einen Source Generator oder einen vorgefertigten Pfad.
- Lösung: Unable to resolve service for type 'X' while attempting to activate 'Y'
ASP.NET Core wirft diese Ausnahme, wenn ein Konstruktor einen Typ anfordert, der nie registriert wurde, im falschen Container registriert wurde oder erst nach dem Build des Hosts hinzugefügt wurde. Drei konkrete Lösungen decken fast jeden Fall ab.
- Fix: TaskCanceledException: A task was canceled in HttpClient
HttpClient wirft TaskCanceledException aus drei verschiedenen Gründen: Timeout, Abbruch durch den Aufrufer oder Verbindungsabbruch. Unterscheiden Sie sie über InnerException und CancellationToken.IsCancellationRequested und beheben Sie dann die richtige Ursache.
- Fix: The JSON value could not be converted to System.DateTime
System.Text.Json akzeptiert für DateTime nur ISO-8601-Strings. Senden Sie 2026-05-08T14:00:00Z oder registrieren Sie einen JsonConverter, der Ihr Format parst. Leere Strings und Unix-Timestamps lösen ebenfalls aus.
- Workflows in Microsoft Agent Framework überleben Prozessneustarts jetzt via Durable Task
Verpacken Sie einen Agent-Framework-Workflow in Microsoft.Agents.AI.DurableTask, und jeder Executor-Schritt bekommt einen Checkpoint. Crash, Redeploy, Neustart: Der Lauf macht dort weiter, wo er gestoppt wurde.
- Fix: The instance of entity type cannot be tracked because another instance with the same key value is already being tracked
EF Core 11 wirft diese Ausnahme, wenn zwei Objekte einen Primärschlüssel innerhalb eines DbContext teilen. Lösen Sie das alte Objekt oder aktualisieren Sie es an Ort und Stelle. AsNoTracking auf der Lesung verhindert die Kollision.
- Fix: A second operation was started on this context instance before a previous operation completed
EF Core wirft diese Ausnahme, wenn zwei await parallel auf demselben DbContext laufen. Warten Sie jeden Aufruf sequenziell ab, oder holen Sie sich pro nebenläufiger Arbeitseinheit einen frischen DbContext über IDbContextFactory.
- Microsoft Agent Framework sichert riskante Tool-Aufrufe mit FunctionApprovalRequestContent ab
Verpacken Sie ein AIFunction in ApprovalRequiredAIFunction, und der Agent hält mitten im Lauf an, um Erlaubnis zu erbitten. So funktioniert der Anfrage- und Antwort-Fluss in C#.
- Lösung: System.InvalidOperationException: No connection string named 'DefaultConnection' could be found
Wenn GetConnectionString in .NET 11 null zurückgibt, fehlt der Schlüssel in Ihrer appsettings.json, die Datei wird nicht in die Build-Ausgabe kopiert, oder die falsche Umgebungsdatei wird gewählt. Drei Prüfungen klären 95% der Fälle.
- T[] in ReadOnlyMemory<T> in C# umwandeln (impliziter Operator und expliziter Konstruktor)
Drei Wege, ein T[] in .NET 11 in ein ReadOnlyMemory<T> einzuhüllen: die implizite Konvertierung, der explizite Konstruktor und AsMemory(). Wann welcher der richtige ist.
- Drag-and-Drop in .NET MAUI 11 implementieren
End-to-End-Drag-and-Drop in .NET MAUI 11: DragGestureRecognizer, DropGestureRecognizer, eigene DataPackage-Payloads, AcceptedOperation, Gestenposition und die plattformspezifischen PlatformArgs-Fallen unter Android, iOS, Mac Catalyst und Windows.
- So unterstützen Sie den Dark Mode in einer .NET MAUI-App korrekt
Dark Mode End-to-End in .NET MAUI 11: AppThemeBinding, SetAppThemeColor, RequestedTheme, UserAppTheme-Override mit Persistenz, das RequestedThemeChanged-Ereignis und die plattformspezifischen Info.plist- und MainActivity-Details, die die Dokumentation übergeht.
- Tailwind CSS mit Blazor WebAssembly in .NET 11 verwenden
Ein vollständiges .NET 11 Setup für Tailwind CSS v4 in einer Blazor WebAssembly App: standalone CLI (kein Node), MSBuild-Target, @source-Direktiven für Razor und CSS-Isolation-Dateien sowie eine Publish-Pipeline, die Native AOT übersteht.
- N+1-Abfragen in EF Core 11 erkennen
Ein praktischer Leitfaden zum Aufspüren von N+1-Abfragen in EF Core 11: wie das Muster in echtem Code aussieht, wie Sie es über Logging, Diagnose-Interceptoren, OpenTelemetry und einen Test sichtbar machen, der den Build bricht, sobald ein Hot Path regrediert.
- Kompilierte Abfragen mit EF Core für Hot Paths verwenden
Ein praktischer Leitfaden zu kompilierten Abfragen in EF Core 11: wann EF.CompileAsyncQuery wirklich gewinnt, das Static-Field-Pattern, die Stolperfallen bei Include und Tracking, und wie Sie vorher und nachher benchmarken, um den Mehraufwand zu rechtfertigen.
- Wie Sie eine MAUI-App schreiben, die nur auf Windows und macOS läuft (ohne Mobile)
Entfernen Sie Android und iOS aus einem .NET MAUI 11-Projekt, sodass nur Windows und Mac Catalyst veröffentlicht werden: die csproj-Änderungen, die Workload-Befehle und das Multi-Targeting, das Ihren Code sauber hält.
- Strukturierte Protokollierung mit Serilog und Seq in .NET 11 einrichten
Eine vollständige Anleitung, um Serilog 4.x und Seq 2025.2 in eine .NET 11 ASP.NET Core App einzubinden: AddSerilog vs. UseSerilog, zweistufige Bootstrap-Protokollierung, JSON-Konfiguration, Enricher, Request Logging, OpenTelemetry-Trace-Korrelation, API-Schlüssel und die Produktionsfallstricke rund um Buffering, Aufbewahrung und Signalebene.
- Wie Sie OpenTelemetry mit .NET 11 und einem kostenlosen Backend verwenden
Verbinden Sie OpenTelemetry-Traces, -Metriken und -Logs in einer ASP.NET Core .NET 11-Anwendung mit dem OTLP-Exporter und schicken Sie die Daten an ein kostenloses, selbst gehostetes Backend: das standalone Aspire Dashboard für die lokale Entwicklung, Jaeger und SigNoz für selbst gehostete Produktion und den OpenTelemetry Collector, wenn Sie beides brauchen.
- Integrationstests gegen einen echten SQL Server mit Testcontainers schreiben
Eine vollständige Anleitung, um ASP.NET Core-Integrationstests gegen einen echten SQL Server 2022 mit Testcontainers 4.11 und EF Core 11 auszuführen: WebApplicationFactory verdrahten, IAsyncLifetime, DbContext-Registrierung austauschen, Migrationen anwenden, Parallelität, Aufräumen mit Ryuk und CI-Stolperfallen.
2026 / 04
- Wie Sie Rate Limiting pro Endpunkt in ASP.NET Core 11 hinzufügen
Ein vollständiger Leitfaden zu Rate Limiting pro Endpunkt in ASP.NET Core 11: Wann Fixed Window vs. Sliding Window vs. Token Bucket vs. Concurrency wählen, wie sich RequireRateLimiting und [EnableRateLimiting] unterscheiden, Partitionierung nach Benutzer oder IP, der OnRejected-Callback und die Falle bei verteilter Bereitstellung, in die jeder tappt.
- So nutzen Sie den neuen System.Threading.Lock-Typ in .NET 11
System.Threading.Lock kam mit .NET 9 und ist die Standard-Synchronisationsprimitive in .NET 11 und C# 14. Diese Anleitung zeigt die Migration von lock(object), wie EnterScope funktioniert und die Stolperfallen rund um await, dynamic und Downlevel-Targets.
- Wie Sie einen Source Generator für INotifyPropertyChanged schreiben
Eine vollständige Anleitung zum Bau eines eigenen inkrementellen Source Generators für INotifyPropertyChanged in C# 14 und .NET 11: die IIncrementalGenerator-Pipeline, Marker-Attribute, partial class-Ausgabe, das SetProperty-Muster und wie Sie AOT-freundlich bleiben.
- So erkennen Sie, wann eine Datei in .NET fertig geschrieben ist
FileSystemWatcher feuert Changed, bevor der Schreiber fertig ist. Drei zuverlassige Muster fur .NET 11, um zu wissen, wann eine Datei vollstandig geschrieben ist: Offnen mit FileShare.None, Debounce per Grossenstabilisierung und der Rename-Trick auf der Producerseite, der das Problem komplett vermeidet.
- Validierungslogik zwischen Server und Blazor WebAssembly teilen
Die größte Quelle für Validierungs-Drift in einer Blazor-WebAssembly-plus-ASP.NET-Core-Anwendung ist der Drang, die Regeln zweimal zu schreiben. Diese Anleitung zeigt das einzige Layout, das in .NET 11 skaliert: eine Shared-Klassenbibliothek, der die DTOs und ihre Validatoren gehören, eingebunden vom WASM-Client (EditForm + DataAnnotationsValidator oder Blazored.FluentValidation) und vom Server (Endpoint-Filter in Minimal API oder MVC-Modellbindung), mit einem getesteten Round-Trip, der ValidationProblemDetails vom Server zurück in den EditContext überträgt.
- SearchValues<T> in .NET 11 richtig verwenden
SearchValues<T> schlägt IndexOfAny um Faktor 5 bis 250, aber nur wenn Sie es so verwenden, wie es die Laufzeit erwartet. Die Cache-als-static-Regel, die StringComparison-Falle, wann sich der Aufwand nicht lohnt und der IndexOfAnyExcept-Inversionstrick, den niemand dokumentiert.
- Native AOT mit ASP.NET Core Minimal APIs verwenden
Eine vollständige .NET-11-Anleitung zum Ausliefern einer ASP.NET Core Minimal API mit Native AOT: PublishAot, CreateSlimBuilder, quellgenerierte JSON-Serialisierung, die AddControllers-Einschränkung, IL2026-/IL3050-Warnungen und EnableRequestDelegateGenerator für Bibliotheksprojekte.
- So wärmen Sie das EF-Core-Modell vor der ersten Abfrage auf
EF Core baut sein konzeptionelles Modell träge beim ersten DbContext-Zugriff auf, weshalb die erste Abfrage in einem frisch gestarteten Prozess mehrere hundert Millisekunden langsamer ist als jede weitere. Dieser Leitfaden behandelt die drei realen Lösungen in EF Core 11: einen Start-IHostedService, der Model berührt und eine Verbindung öffnet, dotnet ef dbcontext optimize zum Ausliefern eines vorkompilierten Modells, und die Cache-Key-Fußangeln, die das Modell trotzdem stillschweigend neu aufbauen.
- Wie Sie einen globalen Exception-Filter in ASP.NET Core 11 hinzufügen
Ein vollständiger Leitfaden zur globalen Ausnahmebehandlung in ASP.NET Core 11: warum IExceptionFilter das falsche Werkzeug ist, wie IExceptionHandler und UseExceptionHandler zusammenarbeiten, ProblemDetails-Antworten, Multi-Handler-Ketten und die Breaking Change in .NET 10 zur Unterdrückung von Diagnostics.
- Wie Sie einen eigenen MCP-Server in C# auf .NET 11 bauen
Bauen Sie einen funktionierenden Model-Context-Protocol-Server in C# 14 / .NET 11 mit dem offiziellen ModelContextProtocol-1.2-SDK. Behandelt Stdio-Transport, [McpServerTool]-Attribute, Dependency Injection, die Stderr-Logging-Falle und die Registrierung bei Claude Code, Claude Desktop und VS Code.
- Wie Sie DbContext mocken, ohne das Change Tracking zu zerstören
Das direkte Mocken von DbContext bricht den ChangeTracker stillschweigend, weshalb Microsoft davon abrät. Diese Anleitung zeigt die zwei Muster, die in EF Core 11 wirklich funktionieren: SQLite In-Memory mit einer offen gehaltenen Verbindung, damit der echte ChangeTracker läuft, und das Repository-Muster, das EF Core ganz aus dem Test heraushebt.
- So testen Sie Code, der HttpClient verwendet, mit Unit Tests
Eine vollständige Anleitung zum Testen von HttpClient in .NET 11: warum Sie HttpClient nicht direkt mocken sollten, wie Sie einen HttpMessageHandler-Stub schreiben, den Primary Handler mit IHttpClientFactory austauschen, Polly-Retries verifizieren und die Option WireMock.Net.
- Channels statt BlockingCollection in C# verwenden
System.Threading.Channels ist der async-fähige Ersatz für BlockingCollection in .NET 11. Diese Anleitung zeigt die Migration, die Wahl zwischen begrenzt und unbegrenzt sowie den Umgang mit Backpressure, Cancellation und sauberem Shutdown ohne Deadlocks.
- So schreiben Sie einen benutzerdefinierten JsonConverter in System.Text.Json
Eine vollständige Anleitung zum Schreiben eines benutzerdefinierten JsonConverter<T> für System.Text.Json in .NET 11: wann Sie ihn wirklich brauchen, wie Sie Utf8JsonReader korrekt navigieren, wie Sie generische Typen mit JsonConverterFactory behandeln und wie Sie AOT-freundlich bleiben.
- Wie man stark typisierten Client-Code aus einer OpenAPI-Spezifikation in .NET 11 generiert
Verwenden Sie Kiota, Microsofts offiziellen OpenAPI-Code-Generator, um aus jeder OpenAPI-Spezifikation einen fluenten, stark typisierten C#-Client zu erzeugen. Schritt für Schritt: installieren, generieren, in ASP.NET Core Dependency Injection einbinden und Authentifizierung konfigurieren.
- Wie man eine lang laufende Task in C# ohne Deadlock abbricht
Kooperativer Abbruch mit CancellationToken, CancelAsync, Task.WaitAsync und verknüpften Tokens in .NET 11. Plus die Blocking-Patterns, die einen sauberen Abbruch in einen Deadlock verwandeln.
- Wie man IAsyncEnumerable<T> mit EF Core 11 verwendet
EF Core 11 Queries implementieren IAsyncEnumerable<T> direkt. So streamen Sie Zeilen mit await foreach, wann Sie es gegenüber ToListAsync bevorzugen sollten, und die Fallstricke rund um Verbindungen, Tracking und Cancellation.
- Wie man Records mit EF Core 11 korrekt verwendet
Eine praktische Anleitung zur Kombination von C#-Records und EF Core 11. Wo Records passen, wo sie das Change Tracking brechen, und wie man Value Objects, Entities und Projections modelliert, ohne mit dem Framework zu kämpfen.
- Node.js-Addons in C#: .NET Native AOT ersetzt C++ und node-gyp
Das C# Dev Kit Team hat sein C++-Node.js-Addon gegen eine .NET 10 Native AOT Library getauscht, mit N-API, UnmanagedCallersOnly und LibraryImport, um eine einzelne .node-Datei ohne Python oder node-gyp zu produzieren.
- Wie man mehrere Werte aus einer Methode in C# 14 zurückgibt
Sieben Wege, um mehr als einen Wert aus einer C# 14 Methode zurückzugeben: benannte Tupel, out-Parameter, Records, Structs, Deconstruction und der Extension-Member-Trick für Typen, die Ihnen nicht gehören. Echte Benchmarks und eine Entscheidungsmatrix am Ende.
- RyuJIT trimmt mehr Bounds Checks in .NET 11 Preview 3: Index-from-end und i + Konstante
.NET 11 Preview 3 bringt RyuJIT bei, redundante Bounds Checks bei aufeinanderfolgendem Index-from-end-Zugriff und bei i + Konstante < length-Mustern zu eliminieren, was Branch-Druck in engen Schleifen senkt.
- RegexOptions.AnyNewLine landet in .NET 11 Preview 3: Unicode-bewusste Anchors ohne die \r?-Hacks
.NET 11 Preview 3 fügt RegexOptions.AnyNewLine hinzu, damit ^, $, \Z und . jede Unicode-Newline-Sequenz erkennen, inklusive \r\n, NEL, LS und PS, wobei \r\n als ein atomarer Break behandelt wird.
- EF Core 11 beschneidet unnötige Referenz-Joins in Split Queries
EF Core 11 Preview 3 entfernt redundante To-one-Joins aus Split Queries und streicht überflüssige ORDER BY-Schlüssel. Ein gemeldetes Szenario wurde 29% schneller, ein anderes 22%. So sieht das SQL jetzt aus.
- System.Text.Json in .NET 11 Preview 3 fügt PascalCase und Per-Member-Naming-Policies hinzu
.NET 11 Preview 3 schließt die Naming-Policy-Geschichte in System.Text.Json ab: JsonNamingPolicy.PascalCase, ein Member-Level-Attribut [JsonNamingPolicy] und ein Type-Level-Default [JsonIgnore] für sauberere DTOs.
- EF Core 11 fügt GetEntriesForState hinzu, um DetectChanges zu überspringen
EF Core 11 Preview 3 führt ChangeTracker.GetEntriesForState ein, einen state-gefilterten Enumerator, der einen zusätzlichen DetectChanges-Pass in Hot Paths wie SaveChanges-Interceptors und Audit-Hooks vermeidet.
- Eine Datenbank-Engine mit Mikrosekunden-Latenz in C# bauen
Loic Baumanns Typhon-Projekt zielt auf ACID-Commits in 1-2 Mikrosekunden mittels ref structs, Hardware-Intrinsics und gepinntem Speicher und zeigt, dass C# auf Systemprogrammier-Niveau mithalten kann.
- Benutzerdefinierte Compound-Assignment-Operatoren in C# 14: in-place += ohne die zusätzliche Allokation
C# 14 erlaubt das Überladen von +=, -=, *= und Kollegen als void-Instanzmethoden, die den Empfänger in-place mutieren, was Allokationen für große Werthalter wie BigInteger-artige Buffer und Tensoren reduziert.
- Wie Dappers standardmäßige nvarchar-Parameter Ihre SQL-Server-Indizes still killen
C#-Strings, die durch Dapper gesendet werden, fallen standardmäßig auf nvarchar(4000), was SQL Server zu impliziten Konvertierungen und vollen Index-Scans zwingt. Hier, wie man es mit DbType.AnsiString behebt.
- .NET 11 fügt System.IO.Compression native Zstandard-Kompression hinzu
.NET 11 Preview 1 liefert ZstandardStream, ZstandardEncoder und ZstandardDecoder in System.IO.Compression aus und bietet schnelle, eingebaute zstd-Unterstützung ohne Drittanbieterpakete.
- EF Core 11 lässt Sie eine Migration in einem Befehl erstellen und anwenden
Der Befehl dotnet ef database update akzeptiert nun --add, um eine Migration in einem einzigen Schritt zu scaffolden und anzuwenden. So funktioniert es, warum es für Container und .NET Aspire wichtig ist, und worauf zu achten ist.
- EF Core 11 fügt native SQL Server Vektorsuche mit DiskANN-Indizes hinzu
EF Core 11 Preview 2 unterstützt SQL Server 2025 VECTOR_SEARCH() und DiskANN-Vektorindizes direkt aus LINQ. So richten Sie den Index ein, führen näherungsweise Abfragen aus, und das ändert sich gegenüber dem VectorDistance-Ansatz von EF Core 10.
- ReSharper landet in VS Code und Cursor, kostenlos für nicht-kommerzielle Nutzung
JetBrains hat ReSharper als VS Code-Erweiterung mit vollständiger C#-Analyse, Refactoring und Unit-Tests veröffentlicht. Funktioniert auch in Cursor und Google Antigravity und kostet nichts für OSS und Lernen.
- C# 15 Union-Typen sind da: Type Unions kommen in .NET 11 Preview 2
C# 15 führt das union-Schlüsselwort für Type Unions mit erschöpfendem Pattern Matching und impliziten Konvertierungen ein. Jetzt verfügbar in .NET 11 Preview 2.
- Microsoft Agent Framework 1.0: KI-Agenten in reinem C# bauen
Microsoft Agent Framework erreicht 1.0 mit stabilen APIs, Multi-Provider-Konnektoren, Multi-Agent-Orchestrierung und A2A/MCP-Interop. So sieht es in der Praxis auf .NET 10 aus.
- .NET 11 Runtime Async ersetzt State Machines durch sauberere Stack Traces
Runtime Async in .NET 11 verlagert die async/await-Behandlung von compiler-generierten State Machines in die Laufzeit selbst und produziert lesbare Stack Traces, korrekte Breakpoints und weniger Heap-Allokationen.
2026 / 02
- Erweiterungsmember in C# 14: Erweiterungseigenschaften, -operatoren und statische Erweiterungen
C# 14 führt Erweiterungsmember ein, mit denen Sie Erweiterungseigenschaften, -operatoren und statische Member zu existierenden Typen mit dem neuen extension-Schlüsselwort hinzufügen können.
- C# 14 Idee: Interceptors könnten die Source-Generation von System.Text.Json automatisch wirken lassen
Eine Community-Diskussion schlug vor, C# 14 Interceptors zu nutzen, um JsonSerializer-Aufrufe so umzuschreiben, dass sie automatisch einen generierten JsonSerializerContext verwenden und so die AOT-freundliche Source-Generation mit saubereren Aufrufstellen erhalten.
- Null-bedingte Zuweisung in C# 14: ?. und ?[] auf der linken Seite verwenden
C# 14 erweitert die null-bedingten Operatoren, sodass sie auf der linken Seite von Zuweisungen funktionieren und ausführliche Null-Prüfungen beim Setzen von Eigenschaften oder Indexern entfallen.
- Polars.NET: eine Rust-DataFrame-Engine für .NET 10, die auf LibraryImport setzt
Ein neues Polars.NET-Projekt liegt nach einem Community-Post vom 6. Februar 2026 im Trend. Die Schlagzeile ist einfach: eine .NET-freundliche DataFrame-API, gestützt von Rust Polars, mit einem stabilen C ABI und LibraryImport-basierter Interop, um den Overhead niedrig zu halten.
2026 / 01
- Eine WinUI 3-App mit "Nur lokal"-Notizen ist die richtige Art langweilig: offline-first, SQLite, tastaturzentriert
Miyanyedi Quick Note ist eine WinUI 3 + SQLite-Notiz-App, die offline-first und datenschutzfreundlich ist. Warum "nur lokal" ein Feature ist, plus ein minimales SQLite-Snippet für .NET 8-Desktop-Apps.
- CV Shortlist: ein KI-gestütztes .NET 10-SaaS ging open-source, und der Stack lohnt das Studium
CV Shortlist ist ein open-source .NET 10-SaaS, das Azure Document Intelligence mit einem OpenAI-Modell kombiniert. Stack, Konfigurationsdisziplin und KI-Integrationsgrenze lohnen das Studium.
- ModularPipelines V3: CI-Pipelines in C# schreiben, lokal debuggen, kein YAML-Babysitting mehr
ModularPipelines V3 erlaubt Ihnen, CI-Pipelines in C# statt in YAML zu schreiben. Führen Sie sie lokal mit dotnet run aus, profitieren Sie von Sicherheit zur Kompilierzeit und debuggen Sie mit Haltepunkten.
- Microsoft `mcp`: Model Context Protocol-Server aus C# auf .NET 10 verdrahten
So verdrahten Sie Model Context Protocol (MCP)-Server in C# auf .NET 10 mit microsoft/mcp. Behandelt Tool-Verträge, Eingabevalidierung, Auth, Observability und produktionstaugliche Muster.
- C# 13: Das Ende der `params`-Allokationen
C# 13 beseitigt endlich die versteckte Array-Allokation hinter params. Sie können params jetzt mit Span, ReadOnlySpan, List und anderen Auflistungstypen für allokationsfreie variadische Methoden verwenden.
- C#-Vorschlag: Discriminated Unions
Ein Blick auf den Discriminated-Unions-Vorschlag für C#: das union-Schlüsselwort, erschöpfender Mustervergleich und wie er OneOf-Bibliotheken sowie Klassenhierarchien ersetzen könnte.
2025 / 04
- C# 14: Vereinfachte Parameter mit Modifizierern in Lambdas
C# 14 erlaubt die Verwendung der Modifizierer ref, out, in, scoped und ref readonly an implizit typisierten Lambda-Parametern und macht die explizite Angabe der Parametertypen überflüssig.
- Partielle Konstruktoren und Ereignisse in C# 14
C# 14 ermöglicht, Instanzkonstruktoren und Ereignisse als partielle Member zu deklarieren und Definitionen über mehrere Dateien aufzuteilen, für sauberere Codegenerierung und bessere Trennung der Belange.
- C# 14: nameof-Unterstützung für ungebundene generische Typen
C# 14 erweitert den nameof-Ausdruck um Unterstützung für ungebundene generische Typen wie List<> und Dictionary<,>, sodass Platzhalter-Typargumente entfallen.
- Implizite Span-Konvertierungen in C# 14: Erstklassige Unterstützung für Span und ReadOnlySpan
C# 14 fügt eingebaute implizite Konvertierungen zwischen Span, ReadOnlySpan, Arrays und Strings hinzu. Das ermöglicht sauberere APIs, bessere Typinferenz und weniger manuelle AsSpan()-Aufrufe.
- C# 14: Das field-Schlüsselwort und Eigenschaften mit field-basierter Speicherung
C# 14 führt das kontextuelle Schlüsselwort field für Eigenschafts-Accessoren ein. So können Sie zu Auto-Properties benutzerdefinierte Logik hinzufügen, ohne ein separates Hintergrundfeld zu deklarieren.
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
- C# Zufällig Elemente aus einer Liste auswählen
In C# können Sie mit Random.GetItems, einer in .NET 8 eingeführten Methode, zufällig Elemente aus einer Liste auswählen. Lernen Sie, wie es mit praktischen Beispielen funktioniert.
- MAUI: Wie Sie Handler in einer Bibliothek registrieren
Erfahren Sie, wie Sie View-Handler und Services innerhalb einer .NET MAUI-Bibliothek mit dem Builder-Muster und MauiAppBuilder-Erweiterungsmethoden registrieren.
- Behebung des Fehlers: 'Point' hat keine vordefinierte Größe, daher kann sizeof nur in einem unsafe-Kontext verwendet werden
Beheben Sie den C#-Fehler, bei dem sizeof außerhalb eines unsafe-Kontexts nicht mit Point verwendet werden kann. Zwei Lösungen: unsafe-Code aktivieren oder Marshal.SizeOf verwenden.
- C# Auf das Backing Field einer privaten Eigenschaft per Unsafe Accessor zugreifen
Mit UnsafeAccessorAttribute in .NET 8 auf die automatisch generierten Backing Fields privater Auto-Properties in C# zugreifen, ohne Reflection.
- C# ZIP-Dateien in einen Stream
.NET 8 enthält neue Überladungen von CreateFromDirectory und ExtractToDirectory, mit denen Sie ZIP-Dateien direkt in und aus einem Stream erstellen und extrahieren können, ohne auf die Festplatte zu schreiben.
- .NET 8 Performance: GetGenericTypeDefinition 10x schneller
Benchmarks von GetGenericTypeDefinition in .NET 8 im Vergleich zu .NET 7 zeigen eine fast 10x bessere Leistung. Sehen Sie sich den Benchmark-Code und die Ergebnisse mit BenchmarkDotNet an.
- Wie Sie unter .NET core einen Screenshot erstellen
Erfahren Sie, wie Sie aus einer .NET-Konsolenanwendung mit System.Windows.Forms einen Screenshot Ihres gesamten Desktops aufnehmen. Eine reine Windows-Lösung, die alle Monitore abdeckt.
- C# Wie Sie ein readonly-Feld mit UnsafeAccessor aktualisieren
Erfahren Sie, wie Sie in C# ein readonly-Feld mit UnsafeAccessor aktualisieren, einer Alternative zu Reflection ohne deren Performance-Nachteil. Verfügbar in .NET 8.
- .NET 8 Performance: UnsafeAccessor vs. Reflection
Benchmark von UnsafeAccessor gegen Reflection in .NET 8. So erreicht UnsafeAccessor Performance ohne Overhead im Vergleich zur klassischen Reflection.
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
- Implementation type Data.AppDbContext can't be converted to service type Microsoft.AspNetCore.Identity.IUserStore
Beheben Sie den ASP.NET Core Identity-Fehler, bei dem AppDbContext nicht in IUserStore konvertiert werden kann, indem Sie AddEntityFrameworkStores in Ihre Identity-Konfiguration aufnehmen.
- .NET 8 Properties aus Interface-Hierarchien serialisieren
.NET 8 unterstützt das Serialisieren von Properties aus Interface-Hierarchien, inklusive aller Properties aller Interfaces, abhängig vom deklarierten Variablentyp.
- .NET 8 In nicht-öffentliche Properties deserialisieren
Erfahren Sie, wie Sie in .NET 8 mit dem Attribut JsonInclude und parameterisierten Konstruktoren JSON in nicht-öffentliche Properties deserialisieren.
- .NET 8 JsonStringEnumConverter mit native AOT verwenden
Erfahren Sie, wie Sie den neuen JsonStringEnumConverter<TEnum> in .NET 8 für eine native AOT-kompatible Enum-Serialisierung mit System.Text.Json einsetzen.
- The type or namespace name InterceptsLocationAttribute could not be found
So beheben Sie den Fehler CS0246 für InterceptsLocationAttribute bei C#-Interceptors, indem Sie das Attribut selbst definieren.
- .NET 8 JsonSerializerOptions als readonly markieren
Erfahren Sie, wie Sie in .NET 8 mit MakeReadOnly JsonSerializerOptions-Instanzen schreibgeschützt machen und über IsReadOnly prüfen, ob sie es sind.
- .NET 8 Serialisierung von Half, Int128 und UInt128
System.Text.Json in .NET 8 unterstützt von Haus aus die Serialisierung der numerischen Typen Half, Int128 und UInt128.
- .NET 8 Memory<byte> wird als Base64 serialisiert
Ab .NET 8 werden sowohl Memory<byte> als auch ReadOnlyMemory<byte> als Base64-Strings serialisiert, während andere Typen wie Memory<int> weiter als JSON-Arrays bleiben.
- .NET 8 nicht-öffentliche Member in die JSON-Serialisierung einbeziehen
Erfahren Sie, wie Sie in .NET 8 mit dem Attribut JsonInclude private, protected und internal Properties in die JSON-Serialisierung aufnehmen.
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
- C# 12 - Standardwerte für Parameter in Lambda-Ausdrücken
C# 12 erlaubt es, Standardwerte für Parameter und params-Arrays in Lambda-Ausdrücken anzugeben, genau wie in Methoden und lokalen Funktionen.
2023 / 03
- C# 11 - Generische Attribute
Erfahren Sie, wie Sie generische Attribute in C# 11 definieren und nutzen, einschließlich Einschränkungen für Typargumente und gängiger Fehlermeldungen.
- C# 11 - file-Zugriffsmodifizierer und dateibezogene Typen
Erfahren Sie, wie der file-Modifizierer in C# 11 den Geltungsbereich eines Typs auf die Datei beschränkt, in der er deklariert wird, und so Namenskollisionen mit Source Generators vermeidet.
- C# 11 - Interpolierte Raw-String-Literale
Erfahren Sie, wie Sie interpolierte Raw-String-Literale in C# 11 einsetzen, einschließlich Escapen von geschweiften Klammern, mehreren $-Zeichen und bedingten Operatoren.
- Raw-String-Literale in C# 11 (Dreifach-Anführungszeichen-Syntax)
Verwenden Sie Raw-String-Literale in C# 11 (Dreifach-Anführungszeichen-Syntax `"""`), um Leerzeichen, Zeilenumbrüche und Anführungszeichen ohne Escape-Sequenzen einzubetten. Regeln und Beispiele.
- Wie Sie zu C# 11 wechseln
Beheben Sie den Fehler 'Feature is not available in C# 10.0', indem Sie über das Target Framework oder LangVersion in Ihrer .csproj-Datei zu C# 11 wechseln.
- C# Exception werfen, wenn null: ArgumentNullException.ThrowIfNull (.NET 6+)
Verwenden Sie ArgumentNullException.ThrowIfNull in .NET 6+ für prägnante Null-Prüfungen oder throw-Ausdrücke in C# 7+ für ältere Frameworks.
2020 / 11
- Embedded-Resource-Stream in .NET Core abrufen
Erfahren Sie, wie Sie in .NET Core einen Stream zu einer eingebetteten Ressource abrufen, indem Sie die Zusammensetzung des Ressourcennamens verstehen und GetManifestResourceStream nutzen.
- appsettings.json mit Xamarin.Forms verwenden
Erfahren Sie, wie Sie appsettings.json-Konfigurationsdateien mit Xamarin.Forms nutzen, indem Sie die Datei als Ressource einbetten und ein IConfiguration-Objekt aufbauen.
- Wie Sie Ihren lokalen SignalR-Dienst mit ngrok öffentlich für mobile Clients bereitstellen
Verwenden Sie ngrok, um Ihren lokalen SignalR-Dienst öffentlich verfügbar zu machen, sodass mobile Clients ohne Netzwerk-Konfiguration oder SSL-Workarounds verbinden können.
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
- Hintergründe in Xamarin Forms animieren
Erstellen Sie mit ScaleTo-Animationen auf übereinandergelegten BoxViews einen sanften animierten Hintergrundeffekt in Xamarin Forms.
2013 / 10
- Wie lange braucht ein PC, um bis eine Billion zu zählen
Benchmark, wie lange ein PC braucht, um bis eine Billion und darüber hinaus zu zählen, mit aktualisierten Ergebnissen aus 2023.
2013 / 06
- Spracherkennung zu Ihrer WP8-App hinzufügen
Fügen Sie Ihrer Windows-Phone-8-App Spracherkennung hinzu, indem Sie das SpeechTextBox-Control aus dem Windows Phone Toolkit verwenden.
- Live Tiles regelmäßig mit einem ScheduledTaskAgent aktualisieren
Verwenden Sie einen ScheduledTaskAgent, um die Live Tiles Ihres Windows Phone regelmäßig aus einem RSS-Feed zu aktualisieren.
2013 / 05
- Wide Tiles für Ihre Windows-Phone-7-App erstellen
Erstellen Sie mit der MangoPollo-Bibliothek wide Live Tiles sowohl für Windows Phone 7 als auch 8 mit einem einzigen Codeausschnitt.
2012 / 01
- C#: Hex in Color konvertieren
Eine C#-Erweiterungsmethode, die Hex-Farbcodes (RGB- und ARGB-Format) in Color-Objekte konvertiert.
- Mit Code-Snippets produktiver werden
Erfahren Sie, wie Code-Snippets in Visual Studio Ihre Produktivität steigern können, indem Sie wiederverwendbare Codestücke per Kurzalias einfügen.