Menu

Was ist C#? Die Sprache, .NET, Versionen und ein erstes Programm

C# ist eine statisch typisierte Allzwecksprache von Microsoft, die auf .NET läuft. Wofür sie verwendet wird, wie sie mit .NET zusammenhängt, was jede Version hinzugefügt hat und wie ein C#-Programm aufgebaut ist.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

C# (ausgesprochen „C sharp“) ist eine Allzweck-Programmiersprache, die bei Microsoft von einem Team unter der Leitung von Anders Hejlsberg entworfen und 2002 erstmals veröffentlicht wurde. Sie ist statisch typisiert (jede Variable hat einen Typ, den der Compiler vor dem Programmstart prüft), objektorientiert (Code ist in Klassen organisiert) und verwaltet (ein Garbage Collector gibt Speicher für dich frei). Modernes C# übernimmt außerdem viel aus der funktionalen Programmierung: Lambdas, LINQ-Abfragen, Pattern Matching und unveränderliche Records.

Hier ist ein vollständiges C#-Programm. Klicke auf Run:

Ausgabe:

Hello, Ada! It is 2026.

Wofür C# verwendet wird

C# ist eine Allzwecksprache und steckt daher in den meisten Arten von Software, aber einige Bereiche machen den Großteil aus:

  • Spiele. Unity, eine der meistgenutzten Game Engines, wird in C# geskriptet. Auch Godot unterstützt C#.
  • Web-Backends. ASP.NET Core ist das .NET-Webframework für APIs, Websites und Echtzeit-Apps. In öffentlichen Benchmarks gehört es zu den schnellsten verbreiteten Webframeworks.
  • Desktop-Apps. WPF und Windows Forms unter Windows, .NET MAUI und Avalonia plattformübergreifend.
  • Cloud und Dienste. Azure Functions, Hintergrunddienste, Microservices in Containern.
  • Tools und Automatisierung. Kommandozeilen-Tools, Build-Skripte, Datenverarbeitung.

Besonders verbreitet ist C# in Unternehmen, die auf Microsoft-Technologie setzen, und in Spielestudios. Mobile Apps sind mit .NET MAUI (dem Nachfolger von Xamarin) möglich, das ist aber eine kleinere Nische als Kotlin oder Swift.

C# und .NET sind nicht dasselbe

C# ist die Sprache. .NET ist die Plattform, die sie ausführt, und besteht aus drei Teilen:

  1. Der Runtime (CLR). Der C#-Compiler erzeugt keinen Maschinencode. Er erzeugt Intermediate Language (IL), gespeichert in Dateien mit der Endung .dll oder .exe. Beim Programmstart kompiliert die Common Language Runtime diese IL just in time (JIT) in nativen Code, verwaltet den Speicher mit einem Garbage Collector und erzwingt Typsicherheit.
  2. Der Basisklassenbibliothek. Collections, Dateizugriff, Netzwerk, Text, Datumswerte, Threading: alles unter System.*.
  3. Dem SDK. Der Befehl dotnet, der Projekte anlegt, baut, testet und ausführt.

Andere Sprachen kompilieren in dieselbe IL (F#, Visual Basic), deshalb kann ein C#-Programm eine in F# geschriebene Bibliothek nutzen.

Es gibt zwei Generationen der Plattform. .NET Framework (1.0 im Jahr 2002 bis 4.8.1) läuft nur unter Windows und betreibt noch viele ältere Anwendungen. .NET (bis Version 5 .NET Core genannt) ist der quelloffene, plattformübergreifende Nachfolger, der unter Windows, Linux und macOS läuft. Neue Projekte zielen auf .NET; Releases mit gerader Versionsnummer wie .NET 8 und .NET 10 bekommen drei Jahre Langzeitsupport.

Wie ein C#-Programm aufgebaut ist

Ein C#-Programm besteht aus Typen (Klassen, Structs, Interfaces, Enums, Records), die Member enthalten (Felder, Properties, Methoden). Die Ausführung beginnt in einer statischen Methode namens Main. Namespaces gruppieren zusammengehörige Typen, und using-Direktiven erlauben es, sie mit kurzen Namen anzusprechen.

Ausgabe:

Maya: 21.00
Leo: 13.00

Einiges ist schon zu sehen: Order ist eine Klasse mit zwei Properties (Customer, Total), einem Konstruktor und einer Methode. decimal ist der Typ für Geldbeträge, und das Suffix m kennzeichnet ein Decimal-Literal. var lässt den Compiler den Typ einer lokalen Variable ableiten, und List<Order> ist eine generische Collection, die nur Order-Objekte annimmt. Das {order.Total:F2} innerhalb von $"..." formatiert eine Zahl mit zwei Nachkommastellen.

In einem echten Projekt steht jede Klasse meist in einer eigenen Datei, und die Dateien werden gemeinsam zu einer Assembly kompiliert. Details findest du unter Klassen und Objekte.

Statische Typisierung in der Praxis

Der Compiler kennt den Typ jedes Ausdrucks, deshalb erreicht eine ganze Klasse von Fehlern nie ein laufendes Programm. Einen String einem int zuweisen, eine nicht existierende Methode aufrufen oder Argumente in falscher Reihenfolge übergeben: All das scheitert beim Kompilieren mit einem Fehler, der auf die Zeile zeigt.

Ausgabe:

29.97
45

Die Typen steuern auch den Editor: Autovervollständigung, Umbenennen und „Alle Verweise suchen“ sind in C# exakt, weil die Tools dieselben Typinformationen lesen wie der Compiler.

C#-Versionen und ihre Neuerungen

Seit C# 9 im Jahr 2020 erscheint jeden November eine neue Version zusammen mit einem neuen .NET-Release; davor kamen Versionen alle zwei bis drei Jahre. Jede Version ist so entworfen, dass bestehender Code weiter kompiliert, und die seltenen Ausnahmen (etwa dass field in C# 14 innerhalb von Property-Accessoren zum Schlüsselwort wird) sind als Breaking Changes dokumentiert. Ein für C# 2 geschriebenes Programm kompiliert daher heute fast immer unverändert.

VersionJahrWichtige Neuerungen
C# 22005Generics, Nullable-Werttypen (int?), Iteratoren (yield)
C# 32007LINQ, Lambda-Ausdrücke, var, Objektinitialisierer, Erweiterungsmethoden
C# 42010dynamic, optionale und benannte Parameter
C# 52012async und await
C# 62015String-Interpolation $"...", nameof, Null-bedingtes ?.
C# 72017Tupel, out var, Pattern Matching mit is, Zifferntrennzeichen
C# 82019Nullable-Referenztypen, Switch-Ausdrücke, Bereiche s[1..4], ??=, asynchrone Streams
C# 92020Records, init-Accessoren, Top-Level-Anweisungen, zieltypisiertes new()
C# 102021Globale Usings, dateibezogene Namespaces, Record Structs
C# 112022Raw-String-Literale """, required-Member, Listenmuster
C# 122023Primäre Konstruktoren für Klassen, Collection-Ausdrücke [1, 2, 3]
C# 132024params-Collections, der Typ System.Threading.Lock
C# 142025Erweiterungsmember, das Schlüsselwort field in Properties

Neuere Versionen entfernen vor allem Zeremonie. Dieses Programm für C# 9 und neuer nutzt Top-Level-Anweisungen (kein class Program, kein Main), einen Record und einen Switch-Ausdruck:

// C# 9 and later, in a .NET 6+ project (implicit usings import System)
var order = new Order("Maya", 21.00m);
Console.WriteLine(Shipping(order));

static string Shipping(Order o) => o.Total switch
{
    >= 50m => "free shipping",
    >= 20m => "standard shipping",
    _ => "shipping fee applies"
};

record Order(string Customer, decimal Total);

Dieselbe Logik im älteren, expliziten Stil, der mit C# 6 und jeder späteren Version kompiliert:

Ausgabe:

standard shipping

Beide Formen sind gültiges C#. Den älteren, expliziten Stil triffst du in bestehendem Code, Tutorials und Unity-Projekten, den kürzeren Stil in neuen .NET-Projekten.

LINQ: Datenabfragen in der Sprache

LINQ (Language Integrated Query, C# 3) ist eines der Features, die Leute nennen, wenn sie erklären, warum sie C# mögen. Damit filterst, sortierst, gruppierst und transformierst du jede Collection mit einer Kette von Methoden:

Ausgabe:

95, 91, 88, 72
Average: 78.0
Best: 95

Dieselbe Syntax funktioniert mit Listen im Speicher, mit Datenbanktabellen über Entity Framework und mit XML. Mehr unter LINQ.

Ist C# eine gute erste Sprache?

C# verlangt anfangs mehr als Python: Du deklarierst Typen, beendest Anweisungen mit Semikolons und schreibst Code in Klassen. Dafür fängt der Compiler Fehler früh ab, die Tools (Visual Studio, VS Code, Rider) sind ausgezeichnet, und die Konzepte lassen sich direkt auf Java, TypeScript, Kotlin und C++ übertragen. Wenn du Unity-Spiele bauen oder in einem .NET-Umfeld arbeiten willst, ist es die naheliegende Wahl. Wenn dein Ziel Datenanalyse oder Machine Learning ist, hat Python das größere Ökosystem.

Installiere zum Einstieg das .NET SDK und führe dotnet new console aus, oder beginne mit Hello World und führe die Beispiele auf diesen Seiten direkt aus.

Häufig gestellte Fragen

Was ist C#?

C# (ausgesprochen „C sharp“) ist eine statisch typisierte, objektorientierte Allzweck-Programmiersprache, die bei Microsoft entwickelt und 2002 erstmals veröffentlicht wurde. Ihr Quellcode wird in eine Zwischensprache kompiliert, die die .NET-Runtime in Maschinencode übersetzt, und der Speicher wird per Garbage Collection verwaltet. Sie wird für Web-Backends, Unity-Spiele, Desktop-Apps, Cloud-Dienste und Tools eingesetzt.

Ist C# dasselbe wie .NET?

Nein. C# ist die Sprache; .NET ist die Plattform, auf der sie läuft: die Runtime (CLR), die Basisklassenbibliothek (System.Collections.Generic, System.IO und so weiter) und die SDK-Tools. Auch F# und Visual Basic laufen auf .NET, und eine C#-Version erscheint meist zusammen mit einer .NET-Version (zum Beispiel C# 12 mit .NET 8).

Wofür wird C# verwendet?

Web-APIs und Websites mit ASP.NET Core, Spiele mit Unity (dessen Skriptsprache C# ist), Windows-Desktop-Apps mit WPF und WinForms, plattformübergreifende Apps mit .NET MAUI, Cloud-Dienste und Azure Functions sowie Kommandozeilen-Tools. Verbreitet ist es in Unternehmenssoftware und in Spielestudios.

Ist C# schwer zu lernen?

Als erste Sprache ist es mittelschwer. Die Syntax folgt dem C-Stil und ist strenger als bei Python, da jede Variable einen Typ hat, den der Compiler prüft, aber der Speicher wird für dich verwaltet und die Fehlermeldungen sind klar. Die meisten Einsteiger schreiben nach ein paar Wochen Übung nützliche Konsolenprogramme.

Lohnt es sich noch, C# zu lernen?

Ja. C# gehört in Entwicklerumfragen regelmäßig zu den meistgenutzten Sprachen, .NET ist Open Source und plattformübergreifend, und jeden November erscheint eine neue Sprachversion. Es ist die naheliegende Wahl, wenn du Spiele mit Unity bauen oder in Firmen arbeiten willst, die auf Microsoft-Technologie setzen.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S