C#
Kurz: Eine von Microsoft entwickelte, objektorientierte Programmiersprache, die auf dem .NET-Framework läuft.
Genauer: Syntaktisch eng an Java und C++ angelehnt (geschweifte Klammern, statische Typisierung), aber mit modernen Spracherweiterungen wie LINQ, async/await und Nullable-Reference-Types. Wird vor allem für Windows-Anwendungen, Unity-Spieleentwicklung und Backend-Dienste mit ASP.NET eingesetzt.
Im Detail
Entstehung und Entwicklung
C# wurde ab 1999 unter der Leitung von Anders Hejlsberg (zuvor Chef-Architekt von Borlands Delphi) bei Microsoft entwickelt und 2000 zusammen mit dem .NET Framework vorgestellt. Die Sprache war von Anfang an als moderne, typsichere Alternative zu Java gedacht — Microsoft hatte zuvor mit Sun einen Rechtsstreit um eine eigene, inkompatible Java-Variante (J++), und C# war in vielerlei Hinsicht die eigenständige Weiterentwicklung dieser Ideen. Bis heute übernimmt C# regelmäßig Konzepte aus Sprachen wie F#, Haskell oder TypeScript (z. B. Pattern Matching, Records, nullable Reference Types) und gilt inzwischen als eine der funktionsreichsten Mainstream-Sprachen überhaupt.
LINQ und funktionale Elemente
Ein bekanntes C#-Feature ist LINQ (“Language Integrated Query”) — erlaubt es, Datenabfragen direkt in der Sprache selbst zu formulieren, ähnlich wie SQL-Abfragen, statt manuell durch Collections zu iterieren:
var teureProdukte = produkte
.Where(p => p.Preis > 100)
.OrderBy(p => p.Name)
.Select(p => new { p.Name, p.Preis })
.ToList();LINQ funktioniert nicht nur auf In-Memory-Collections, sondern auch auf Datenbanken (über Entity Framework, LINQ-to-SQL übersetzt die Abfrage automatisch in echtes SQL) und XML-Dokumente — dieselbe Abfrage-Syntax funktioniert über sehr unterschiedliche Datenquellen hinweg.
Asynchrone Programmierung
async/await gehört zu den prägendsten C#-Features und wurde später von vielen anderen Sprachen (JavaScript, Python, Rust, Kotlin) übernommen. Es erlaubt, asynchronen Code (z. B. Netzwerkaufrufe) so zu schreiben, als wäre er synchron, ohne dass der Thread währenddessen blockiert:
public async Task<Produkt> LadeProduktAsync(int id)
{
var response = await httpClient.GetAsync($"/api/produkte/{id}");
var json = await response.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<Produkt>(json);
}Plattform und Ökosystem
C# lief ursprünglich exklusiv auf Windows (.NET Framework), ist seit .NET Core (2016, heute vereinheitlicht als ”.NET”) aber plattformübergreifend und quelloffen — Programme laufen inzwischen genauso auf Linux und macOS, und Microsoft selbst betreibt große Teile seiner Cloud-Infrastruktur (Azure) mit .NET. Neben klassischer Anwendungsentwicklung ist C# vor allem durch die Spiele-Engine Unity stark im Gaming-Bereich verbreitet, wo es als Skriptsprache für Spiellogik dient — die meisten Indie-Spiele und viele AAA-Titel nutzen Unity+C#. Weitere wichtige Einsatzfelder: ASP.NET (Web-Backends), .NET MAUI (plattformübergreifende Apps, Nachfolger von Xamarin) und Blazor (Web-Frontends in C# statt JavaScript).
Abgrenzung zu verwandten Sprachen
Gegenüber Java ist C# in vielen Bereichen progressiver in der Sprachentwicklung (echte Properties, Operator-Overloading, Nullable-Value-Types, LINQ) — Java holt einzelne Features oft Jahre später nach. Gegenüber C++ verzichtet C# bewusst auf manuelles Speichermanagement (Garbage Collection statt manueller new/delete-Paare) und Pointer-Arithmetik, was Entwicklung sicherer, aber im Ausnahmefall (z. B. Spiele-Engines mit harten Performance-Anforderungen) weniger kontrollierbar macht — C# bietet dafür mit unsafe-Blöcken eine Escape-Hatch für Low-Level-Zugriff, wenn es wirklich nötig ist.