C# 10: Produktivität steigern, Boilerplate reduzieren
C# 10 bringt vor allem syntaktische Verbesserungen, die Projekte schlanker machen – ohne neue Konzepte einführen zu müssen. Globale Usings, Dateibereichsnamensräume und implizite Usings reduzieren Redundanz. Zeichenfolgeninterpolation in Konstanten sorgt für mehr Ausdrucksstärke bei Compile-Zeit-Konstanten.
Globale Usings
Globale Usings eliminieren Wiederholungen am Anfang jeder Datei. Statt using
-Anweisungen in jeder Datei, definierst du sie einmal zentral:
global using System; global using System.Collections.Generic; global using System.Linq;
Typisch in GlobalUsings.cs
oder _Imports.cs
. Gilt für das ganze Projekt. Spart Tipparbeit, reduziert Merge-Konflikte. Kein Einfluss auf Performance.
Unterstützt: Namespaces, statische Klassen. Nicht unterstützt: Aliase, Bedingungen, Instanzmitglieder.
Dateibereichsnamensräume
Erspart unnötige Klammern und Einrückungen. Statt:
namespace MyApp.Core { class MyClass { } }
jetzt kompakt so:
namespace MyApp.Core; class MyClass { }
Gültig für die ganze Datei. Keine Verschachtelung mehr möglich. Muss an erster Stelle stehen. Praktisch für Libraries, Clean Code und Auto-Generated-Code.
Implizite Usings
Aktivierbar in der .csproj
mit:
enable
Fügt automatisch Standard-Namespaces wie System
, System.Linq
, System.Threading.Tasks
etc. ein – je nach SDK-Typ (z. B. Microsoft.NET.Sdk.Web
). Ideal für kleine Projekte, Samples, Minimal-APIs.
Deaktivierbar mit disable
. Überschreibbar mit:
default;Microsoft.AspNetCore
Kein Einfluss auf die Performance. Es geht rein um weniger Schreibarbeit.
Konstante Zeichenfolgeninterpolation
Vor C# 10 war Interpolation in const
Strings nicht möglich. Jetzt schon – solange alle enthaltenen Werte ebenfalls konstant sind.
const string prefix = "Version"; const int version = 10; const string full = $"{prefix} {version}"; // gültig seit C# 10
Praktisch für Konstanten in Logging, Attributen, Source Generatoren und mehr.
Fazit für Entwickler
- Globale Usings: Reduziert Redundanz, gut für große Projekte
- Dateibereichs-Namensräume: Spart Einrückungen und Klammern
- Implizite Usings: Nützlich für Boilerplate-freie Quickstarts
- Interpolierte Konstanten: Mehr Ausdruck in compile-time Strings