Zuletzt aktualisiert am 04.12.2025 7 Minuten Lesezeit

C# (Programmiersprache)

C# (gesprochen "C-Sharp") ist eine moderne, objektorientierte Programmiersprache, die von Microsoft entwickelt wurde. Sie wurde im Jahr 2000 von Anders Hejlsberg entworfen und ist heute eine der wichtigsten Sprachen im Microsoft-Ökosystem. C# kombiniert die Leistungsfähigkeit von C++ mit der Einfachheit von Visual Basic und eignet sich für Desktop-Anwendungen, Webanwendungen, Spiele und Cloud-Services.

Geschichte und Entwicklung von C#

Die Geschichte von C# begann Ende der 1990er Jahre bei Microsoft. Anders Hejlsberg, der zuvor den Delphi-Compiler bei Borland entwickelt hatte, wurde mit der Aufgabe betraut, eine neue Programmiersprache für die .NET-Plattform zu erschaffen. Das Ziel war eine moderne Sprache, die die Stärken von C++ und Java vereint, aber einfacher zu erlernen ist.

Der Name "C#" leitet sich von der musikalischen Notation ab: Das Kreuz (#) erhöht eine Note um einen Halbton. Dies symbolisiert, dass C# eine Weiterentwicklung von C und C++ darstellt. Ursprünglich hieß die Sprache intern "Cool" (C-like Object Oriented Language).

Die wichtigsten Meilensteine

C# hat seit seiner Einführung eine bemerkenswerte Entwicklung durchlaufen. Während die ersten Versionen noch stark an Java erinnerten, hat sich die Sprache mit jedem Release eigenständiger entwickelt und innovative Features eingeführt.

  • 2002: C# 1.0 zusammen mit Visual Studio .NET und .NET Framework 1.0
  • 2005: C# 2.0 bringt Generics, Partial Classes und anonyme Methoden
  • 2007: C# 3.0 führt LINQ, Lambda-Ausdrücke und Auto-Properties ein
  • 2012: C# 5.0 revolutioniert asynchrone Programmierung mit async/await
  • 2019: C# 8.0 bringt Nullable Reference Types und Pattern Matching
  • 2024: C# 12.0 mit Primary Constructors und Collection Expressions

Hauptmerkmale und Eigenschaften

C# zeichnet sich durch eine moderne, gut lesbare Syntax aus, die sowohl Einsteigern als auch erfahrenen Entwicklern entgegenkommt. Die Sprache ist streng typisiert, was viele Fehler bereits zur Compile-Zeit aufdeckt.

Objektorientierte Programmierung

C# ist vollständig objektorientiert und unterstützt Klassen, Vererbung, Interfaces und Polymorphie. Im Gegensatz zu Java erlaubt C# zusätzlich Properties – spezielle Methoden, die wie Felder aussehen, aber Getter und Setter kapseln.

public class Person
{
    public string Name { get; set; }
    public int Alter { get; set; }

    public void Vorstellen()
    {
        Console.WriteLine($"Ich bin {Name}, {Alter} Jahre alt.");
    }
}

Typsicherheit und Speicherverwaltung

C# prüft Variablentypen zur Compile-Zeit (statische Typisierung) und verhindert so viele Laufzeitfehler. Die Speicherverwaltung übernimmt der Garbage Collector automatisch – du musst dich nicht manuell um das Freigeben von Speicher kümmern. Seit C# 8.0 gibt es außerdem Nullable Reference Types, die vor NullReferenceExceptions schützen.

Die .NET-Plattform

C# läuft auf der .NET-Plattform, einem umfangreichen Framework von Microsoft. Die Common Language Runtime (CLR) führt den kompilierten Code aus und stellt Dienste wie Garbage Collection und Exception Handling bereit. Mit .NET 6+ ist C# vollständig plattformübergreifend – Code läuft auf Windows, Linux und macOS.

Einsatzgebiete

C# wird in verschiedenen Bereichen eingesetzt. Die Sprache ist besonders stark im Microsoft-Ökosystem vertreten, hat sich aber durch .NET Core auch außerhalb von Windows etabliert.

Desktop-Anwendungen

Für Windows-Desktop-Anwendungen bietet C# mehrere Frameworks. Windows Forms eignet sich für einfache Business-Anwendungen, während WPF (Windows Presentation Foundation) moderne UIs mit XAML ermöglicht. Mit .NET MAUI lassen sich plattformübergreifende Apps für Windows, macOS, iOS und Android entwickeln.

Web-Entwicklung mit ASP.NET

ASP.NET Core ist das Web-Framework für C#. Es ermöglicht die Entwicklung von REST-APIs, Web-Anwendungen und Microservices. Mit Blazor kannst du sogar interaktive Web-UIs komplett in C# schreiben – ohne JavaScript.

// Minimale ASP.NET Core API
var app = WebApplication.CreateBuilder(args).Build();

app.MapGet("/", () => "Hallo Welt!");
app.MapGet("/api/users/{id}", (int id) => new { Id = id, Name = "Max" });

app.Run();

Spieleentwicklung mit Unity

C# ist die Hauptsprache für die Unity Game Engine, eine der meistgenutzten Spiele-Engines weltweit. Spiele wie Hollow Knight, Cuphead und Cities: Skylines wurden mit Unity und C# entwickelt. Die Kombination aus einfacher Syntax und der mächtigen Unity-Engine macht C# zur beliebten Wahl für Indie-Entwickler und Studios.

Vergleich: C# vs. Java

C# und Java sind sich syntaktisch sehr ähnlich, da beide von C und C++ abstammen. Beide Sprachen sind objektorientiert, statisch typisiert und laufen in einer verwalteten Laufzeitumgebung. Die wichtigsten Unterschiede liegen in den Sprachfeatures und dem Ökosystem:

Aspekt C# Java
Plattform .NET (Cross-Platform seit .NET Core) JVM (von Anfang an Cross-Platform)
Properties Native Unterstützung Getter/Setter-Methoden
Async/Await Seit C# 5.0 (2012), elegant CompletableFuture (komplexer)
Spieleentwicklung Unity (dominant) LibGDX, jMonkeyEngine

Für Windows-Entwicklung und Unity-Spiele ist C# die naheliegende Wahl. Java punktet bei plattformübergreifenden Enterprise-Anwendungen und hat eine größere Verbreitung im Backend-Bereich, insbesondere bei großen Unternehmen. Beide Sprachen sind ausgereift und haben aktive Communities – die Wahl hängt oft vom konkreten Projekt und der vorhandenen Infrastruktur ab.

Moderne C#-Features

C# hat sich seit Version 1.0 stark weiterentwickelt. Mit jährlichen Releases kommen regelmäßig neue Features hinzu, die den Code kürzer und ausdrucksstärker machen.

LINQ (Language Integrated Query)

LINQ ermöglicht es, Datenabfragen direkt in C# zu schreiben, anstatt separate Abfragesprachen wie SQL zu verwenden. Du kannst damit Collections, Datenbanken und XML-Dokumente mit einer einheitlichen Syntax abfragen. Das macht den Code lesbarer und vermeidet typische Fehlerquellen bei String-basierten Queries.

var studenten = new List<Student>();

var bestandene = studenten
    .Where(s => s.Note <= 4.0)
    .OrderBy(s => s.Note)
    .Select(s => new { s.Name, s.Note });

Async/Await

Mit async und await kannst du asynchronen Code schreiben, der wie synchroner Code aussieht. Das ist besonders nützlich für I/O-Operationen wie HTTP-Requests oder Datenbankabfragen, bei denen du nicht blockierend auf das Ergebnis warten möchtest. Der Compiler kümmert sich um die komplexe Zustandsmaschine im Hintergrund.

public async Task<string> HoleDatenAsync(string url)
{
    using var client = new HttpClient();
    return await client.GetStringAsync(url);
}

Records und Pattern Matching

Records (seit C# 9.0) sind kompakte, unveränderliche Datentypen – ideal für DTOs und Value Objects. Pattern Matching erlaubt elegante Typprüfungen und Verzweigungen. Beide Features zusammen reduzieren Boilerplate-Code erheblich.

// Record mit einer Zeile
public record Person(string Name, int Alter);

// Pattern Matching
string Beschreibe(object obj) => obj switch
{
    int i when i > 0 => $"Positive Zahl: {i}",
    string s => $"Text: {s}",
    null => "Null",
    _ => "Unbekannt"
};

Vor- und Nachteile

Wie jede Programmiersprache hat C# Stärken und Schwächen. Die Entscheidung für oder gegen C# hängt vom konkreten Anwendungsfall ab.

Stärken: C# bietet eine moderne, gut lesbare Syntax und exzellente IDE-Unterstützung durch Visual Studio. Die Sprache wird aktiv weiterentwickelt und ist mit .NET mittlerweile plattformübergreifend einsetzbar. Für Unity-Spieleentwicklung ist C# praktisch alternativlos.

Schwächen: Die historische Windows-Bindung wirkt nach – im Linux-Server-Bereich dominieren andere Sprachen. Die Vielzahl an Sprachfeatures kann für Einsteiger überwältigend sein. Außerdem existieren mit .NET Framework, .NET Core und .NET 5+ verschiedene Versionen, was bei Legacy-Projekten zu Verwirrung führen kann.

C# in der Praxis

C# wird häufig in Unternehmen eingesetzt, die Microsoft-Technologien nutzen. Viele Geschäftsanwendungen, Intranet-Portale und Backend-Services laufen auf .NET. Auch Agenturen, die mit Unity Spiele oder VR/AR-Anwendungen entwickeln, setzen auf C#.

Wer als Fachinformatiker für Anwendungsentwicklung in einem Microsoft-orientierten Unternehmen arbeitet oder in die Spieleentwicklung einsteigen möchte, wird C# mit hoher Wahrscheinlichkeit begegnen.

Entwicklungsumgebung

Für C#-Entwicklung gibt es mehrere IDEs zur Auswahl. Visual Studio (Windows/Mac) bietet den vollen Funktionsumfang, JetBrains Rider ist eine plattformübergreifende Alternative, und Visual Studio Code mit der C#-Extension eignet sich für kleinere Projekte.

# .NET SDK installieren und erstes Projekt erstellen
dotnet new console -n MeinProjekt
cd MeinProjekt
dotnet run

Quellen und weiterführende Links