Die Welt von .NET und C#

C# für Anfänger › Lektion 1.3

🛠 Level 2 · Deine Entwickler-Ausrüstung

Die Welt von .NET und C#

Die Brücke ist gebaut. Jetzt kommt der Testlauf! Entdecke die Werkzeuge hinter deinem C#-Programm und probiere aus, was beim Erstellen und Starten passiert. Die Abenteuerbrücke im Bild begleitet deinen Weg von build zu run.

  • ⏱ 45–60 Minuten
  • 🎯 Grundlagen
  • 💻 Mitmach-Lektion
Zwei jugendliche Abenteuerfiguren bauen eine leuchtende Brücke und testen einen kleinen Roboter

🎒 Deine neuen Skills

  • C#, .NET, SDK und IDE unterscheiden.
  • Den üblichen Weg vom Quellcode zur Ausführung erklären.
  • Projektdateien und Build-Ergebnisse finden.
  • Ein Konsolenprojekt mit dotnet erstellen und starten.

Was du brauchst

Dein erstes C#-Programm und eine eingerichtete Entwicklungsumgebung.Für die Terminalaufgabe brauchst du ein installiertes .NET SDK. Ein älteres .NET-Framework-Projekt kann anders aufgebaut sein.
1

C# ist die Sprache. .NET liefert die Plattform.

Stell dir vor, du entwickelst ein kleines Abenteuerspiel. Seine Regeln schreibst du in C#. Zum Erstellen und Starten brauchst du außerdem Werkzeuge und eine Laufzeit. Die .NET-Bibliotheken liefern fertige Bausteine, zum Beispiel für Textausgaben.
BegriffSeine Aufgabe
C#Die Programmiersprache: ihre Regeln bestimmen, wie du deinen Code schreibst.
.NETDie Entwicklerplattform mit Laufzeit, Bibliotheken und Werkzeugen. Sie unterstützt auch andere Sprachen.
.NET SDKDas Entwicklungspaket: Projekte erstellen, kompilieren und testen. Es enthält auch eine Laufzeit.
Runtime / LaufzeitFührt passende, bereits erstellte Anwendungen aus.
Visual Studio / IDEDie Arbeitsoberfläche mit Codeeditor, Debugger und Zugriff auf Entwicklungswerkzeuge.

Vier Begriffe, vier Rollen

Ordne zu: Du schreibst eine Anweisung. Du erstellst ein Projekt. Du führst eine fertige Anwendung aus. Du setzt einen Haltepunkt im Editor. Welcher Begriff passt jeweils?
Zuordnung prüfen
C# beschreibt die Anweisung; das SDK erstellt das Projekt. Die Laufzeit führt die Anwendung aus. In der IDE setzt du den Haltepunkt.

Die Namen haben eine Geschichte

NameEinordnung
.NET FrameworkDie ursprüngliche Windows-Plattform; bestehende Anwendungen verwenden sie weiterhin.
.NET CoreDie plattformübergreifende Neuentwicklung, aus der das heutige .NET hervorging.
.NET ab Version 5Die Fortsetzung unter dem Namen .NET. .NET Framework bleibt eine eigene Produktlinie.
C#-Sprachversion und .NET-Version haben eine eigene Nummerierung. Eine gleiche Zahl bedeutet keine automatische Gleichsetzung.
2

Wie dein Code zum laufenden Programm wird

Zuerst: Der C#-Compiler übersetzt deinen Quellcode in einen Zwischencode (IL).Beim Ausführen: Der JIT-Compiler übersetzt den benötigten IL-Code in Maschinencode für deinen Rechner.Für heute reicht: Du schreibst, die Werkzeuge übersetzen, dein Programm läuft.

1 · Dein Quellcode

Du schreibst C# in Program.cs.

2 · Kompilieren

Der Compiler prüft den Code und erzeugt IL samt Metadaten.

3 · Ausführen

Die Laufzeit lädt das Programm. JIT übersetzt benötigten Code für die Maschine.

4 · Das Ergebnis

Deine Anweisungen laufen: Die Konsole zeigt deine Nachricht.

Wann fällt der Fehler auf?

Du schreibst versehentlich Consol.WriteLine. Kann die neue Programmversion erfolgreich kompiliert werden?
Erklärung anzeigen
Wenn Consol im Projekt nicht definiert ist, meldet der Compiler einen unbekannten Namen. Der neue Build schlägt fehl. Eine erfolgreiche Kompilierung würde dagegen noch keine fehlerfreie Programmlogik beweisen.
Extra: Läuft mein Programm auf jedem Gerät?
Zwischencode kann auf unterschiedlichen Systemen verwendet werden. Dazu müssen Laufzeit und benötigte Bibliotheken passen.Ein Windows-Forms-Programm ist beispielsweise für Windows bestimmt.

Warum gibt es zwei Übersetzungsschritte?

Der Prozessor führt Maschinenbefehle aus. Deinen C#-Quelltext muss deshalb ein Werkzeug übersetzen.Schritt 1: Quellcode → IL. Beim Erstellen des Projekts prüft der C#-Compiler deine Anweisungen. Er erzeugt unter anderem IL, die Intermediate Language, und Metadaten. IL ist eine Zwischensprache.Schritt 2: IL → Maschinencode. Bei der hier beschriebenen JIT-Ausführung übersetzt die Laufzeit den benötigten Code für den konkreten Rechner. JIT bedeutet just-in-time: Die Übersetzung geschieht, wenn der Code benötigt wird.Die Laufzeit übersetzt nicht unbedingt das gesamte Programm sofort beim Start. Diese Unterscheidung hilft dir später beim Verständnis größerer Anwendungen.Was bedeutet das für dein Abenteuer? Dein Quellcode beschreibt eine Aktion, etwa eine Nachricht an den Spieler. build bereitet das Projekt vor. Beim Ausführen arbeiten Laufzeit und Prozessor zusammen, damit die Nachricht erscheint.IL kann auf mehreren Betriebssystemen verwendet werden. Dafür müssen die passende Laufzeit und die benötigten Bibliotheken vorhanden sein. Eine Anwendung mit Windows Forms oder WPF bleibt an Windows gebunden.
Lösung und Erklärung anzeigen

Extra: Andere Sprachen im Vergleich

C++: Bei der üblichen Kompilierung entsteht nativer Maschinencode für ein bestimmtes Zielsystem.C#: Im hier gezeigten .NET-Ablauf entsteht zunächst IL. JIT übersetzt benötigten Code während der Ausführung. Es gibt auch andere Bereitstellungsarten, etwa Native AOT.Python: Eine Python-Implementierung führt das Programm aus. Die verbreitete Implementierung CPython übersetzt den Quelltext zunächst in Bytecode und führt diesen mit ihrer virtuellen Maschine aus. Der genaue Ablauf hängt von der Implementierung ab.Die Sprache allein verrät somit nicht jede technische Einzelheit der Ausführung.
3

Die unsichtbaren Helfer der Laufzeit

🧹 Speicherverwaltung

Der Garbage Collector gewinnt verwalteten Speicher nicht mehr erreichbarer Objekte zurück. Das passiert zu einem vom System bestimmten Zeitpunkt.

🛡 Typprüfungen

Compiler und Laufzeit verhindern viele unzulässige Operationen. Eine Anwendung braucht trotzdem korrekte Logik und geeignete Tests.

⚠ Ausnahmen

Eine Exception ist eine Meldung über einen bestimmten Laufzeitfehler. Ein Beispiel ist die Division einer ganzen Zahl durch null.Eine logisch falsche Rechnung kann dagegen ganz normal laufen. Soll dein Spieler fünf Münzen bekommen, du ziehst aber fünf ab, kann der Code trotzdem gültig sein. Darum prüfst du die Ergebnisse mit Tests.Der Compiler prüft also nicht, ob dein Spiel genau das tut, was du dir vorgestellt hast.

📚 Bibliotheken

Die .NET-Bibliotheken liefern fertige Bausteine für Texte, Dateien, Mathematik und Netzwerke. Console ist ein Beispiel.

Merke dir die Grenze

Der Garbage Collector schließt nicht automatisch jedes geöffnete Betriebssystem-Ressourcenobjekt sofort. Dateien und andere Ressourcen müssen passend freigegeben werden. Das lernst du später.
4

Projekt-Detektiv: Was liegt in deinem Ordner?

Klicke im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen. Wähle einen Befehl wie „Ordner im Datei-Explorer öffnen“. Jetzt siehst du die Dateien deines eigenen Projekts.
Öffne den Projektordner aus dem Projektmappen-Explorer (Solution Explorer) in Visual Studio. Je nach Sprache der Oberfläche heißt der Befehl etwa „Ordner im Datei-Explorer öffnen“.
Datei / OrdnerWas du dort findest
Program.csDeinen C#-Quellcode.
Name.csprojDie XML-Projektdatei mit Einstellungen, etwa dem Ziel-Framework.
binErgebnisse eines Builds; häufig unter Debug und einem Framework-Unterordner.
objZwischendateien, die die Entwicklungswerkzeuge erzeugen.

Finde drei Spuren

Suche Program.cs, die .csproj-Datei und den bin-Ordner. Öffne die Projektdatei nur zum Lesen. Welches TargetFramework oder TargetFrameworkVersion findest du? Ändere es vorerst nicht.
Deine Fundstücke prüfen
  • Program.cs enthält deinen Code.
  • Die .csproj-Datei enthält die Projekteinstellungen.
  • Nach einem erfolgreichen Build liegt dessen Ergebnis gewöhnlich unter bin.
Ein möglicher Eintrag ist <TargetFramework>net8.0</TargetFramework>. Dein Projekt kann eine andere Version verwenden; bei .NET Framework steht etwa TargetFrameworkVersion mit v4.8.
Eine Lösung beziehungsweise Projektmappe kann mehrere Projekte zusammenfassen. Die genaue Ordnerstruktur hängt vom Projekttyp ab.
Läuft meine Anwendung ohne Visual Studio?
Ja, wenn die passende Laufzeit und die benötigten Dateien vorhanden sind. Eine selbstständig bereitgestellte Anwendung kann die Laufzeit mitbringen. Nur eine .exe-Datei auf einen anderen Rechner zu kopieren reicht nicht immer. Ein Konsolenfenster kann nach Programmende sofort schließen; starte das Programm zum Beobachten aus einem offenen Terminal.

Zusatzmission: Ohne Visual Studio starten

Erstelle dein Projekt erfolgreich. Öffne dann ein Terminal im Ordner mit der .csproj-Datei und starte es mit dotnet run. Was zeigt dir das über die Rolle von Visual Studio?
Lösung und Erklärung anzeigen
Die Anwendung kann ohne geöffnete Visual-Studio-Oberfläche starten. dotnet run verwendet das installierte SDK und die Laufzeit.Du kannst auch die Build-Dateien untersuchen. Je nach Projekttyp gibt es eine Startdatei. Für einen Start auf einem anderen Rechner müssen Laufzeit, Betriebssystem und Begleitdateien passen. Kopiere deshalb nicht einfach nur eine einzelne .exe.Ein per Doppelklick geöffnetes Konsolenfenster kann sich nach Programmende sofort schließen. Im bereits geöffneten Terminal bleibt die Ausgabe sichtbar.
5

Was möchtest du später bauen?

Beim Erstellen eines Projekts wählst du eine Vorlage. Die Vorlage liefert einen passenden Anfang für eine bestimmte Anwendung. Die C#-Sprache verwendest du in vielen verschiedenen Projekttypen.Und Spiele? Auch in der Spieleentwicklung wird C# eingesetzt. Die Unity-Engine unterstützt C#-Skripte für Spielverhalten. Unsere Konsolenaufgaben üben zunächst die grundlegenden Anweisungen; ein grafisches Spiel braucht zusätzliche Werkzeuge und Kenntnisse. Unity: Programmieren mit C#
ProjekttypMögliches Ergebnis
Console AppTextausgaben und Eingaben im Terminal.
Windows Forms / WPFWindows-Anwendungen mit Fenstern und Bedienelementen.
ASP.NET CoreWebanwendungen und Webdienste; C# arbeitet häufig auf dem Server.
.NET MAUIAnwendungen mit gemeinsamem Code für unterstützte Mobil- und Desktopplattformen; passende Plattformwerkzeuge bleiben erforderlich.
Class LibraryWiederverwendbarer Code für andere Projekte.
TestprojektAutomatisierte Prüfungen deiner Anwendung.

Deine Idee zählt

Wähle eine Idee: Lernquiz, kleine Verwaltung oder Webanwendung. Welcher Projekttyp könnte passen? Begründe deine Entscheidung in einem Satz.
Beispiellösung anzeigen
Lernquiz: Eine Console App reicht für Fragen und Texteingaben im Terminal.Kleine Windows-Verwaltung: Windows Forms bietet Fenster und Schaltflächen.Webanwendung: ASP.NET Core eignet sich für Funktionen auf einem Webserver.Andere begründete Lösungen sind ebenfalls möglich.
6

Ein Programm direkt im Terminal starten

Öffne das Terminal Schritt für Schritt

  1. Drücke Windows + E. Der Datei-Explorer öffnet sich.
  2. Öffne deinen Dokumente-Ordner.
  3. Klicke oben in die Adressleiste mit dem Ordnerpfad. Die Suchleiste daneben ist eine andere Eingabe.
  4. Tippe cmd und drücke Enter.
  5. Das Terminal öffnet sich in diesem Ordner. Hier gibst du die folgenden Befehle ein.
Nach jedem Befehl drückst du Enter und wartest auf das Ergebnis. Wenn eine Fehlermeldung erscheint, lies zuerst die Hinweise unter „Der Befehl funktioniert nicht“.
Unter Windows: Öffne deinen Dokumente-Ordner im Datei-Explorer, klicke in die Adressleiste, tippe cmd und drücke Enter. Verwende für das Beispiel einen Ort, an dem noch kein Ordner namens Hello existiert.Gib jeden Befehl einzeln ein. Diese Befehle gehören ins Terminal; dein C#-Code gehört in Program.cs.
Terminal
dotnet --version
dotnet --list-sdks
dotnet --list-runtimes
dotnet new console -o Hello
cd Hello
dotnet build
dotnet run
BefehlBedeutung
dotnet --versionZeigt die ausgewählte SDK-Version.
--list-sdks / --list-runtimesListen der installierten SDKs beziehungsweise Laufzeiten.
dotnet new console -o HelloErstellt ein Konsolenprojekt im neuen Ordner Hello.
cd HelloWechselt in diesen Ordner.
dotnet buildErstellt das Projekt, ohne deine Anwendung zu starten.
dotnet runErstellt das Projekt bei Bedarf und führt es aus.
Die Standardvorlage gibt zunächst Hello, World! aus. Deine Versionsnummern können von Beispielen anderer Rechner abweichen.
Warum steht in Program.cs manchmal nur eine Anweisung?
Anweisungen auf oberster Ebene, die sogenannten top-level statements, erlauben eine kurze Programmform. Der Compiler erzeugt den Einstiegspunkt im Hintergrund. Die klassische Form mit Main ist ebenfalls gültig.
Der Befehl funktioniert nicht – was prüfe ich?
  • dotnet unbekannt: SDK-Installation und Erreichbarkeit prüfen, danach ein neues Terminal öffnen.
  • Kein SDK vorhanden: Eine Runtime allein reicht zum Erstellen des Projekts nicht.
  • Projekt nicht gefunden: In den Ordner mit der .csproj-Datei wechseln.
  • Hello existiert bereits: Einen neuen Namen wählen und auch beim cd-Befehl verwenden.
7

🎯 Mythenjagd: Prüfe die Behauptungen

„C# und .NET sind dasselbe.“
Falsch. C# ist die Sprache, .NET die Entwicklerplattform.
„Jedes C#-Programm läuft nur unter Windows.“
Falsch. Das heutige .NET unterstützt mehrere Betriebssysteme. Einzelne Anwendungsarten und Abhängigkeiten können plattformspezifisch sein.
„Die Dateiendung .exe verrät die komplette Übersetzungsart.“
Falsch. Der Aufbau hängt von Projekt und Bereitstellung ab. Eine .exe kann etwa als Starter für die Anwendung dienen.
„Ein erfolgreicher Build bedeutet, dass alle Ergebnisse richtig sind.“
Falsch. Der Compiler findet viele Syntax- und Typfehler. Logische Fehler brauchen geeignete Tests.
8

🎮 Mission: Starte dein Abenteuer im Terminal

  1. Öffne Program.cs im Hello-Projekt.
  2. Ersetze die vorhandene Ausgabe durch deine eigene Nachricht.
  3. Speichere und führe dotnet build aus. Deine Nachricht erscheint dabei noch nicht.
  4. Führe dotnet run aus und kontrolliere die Ausgabe.
  5. Ändere Console testweise in Consol, speichere und versuche erneut zu kompilieren. Lies die Meldung und korrigiere den Fehler.
Mini-Projekt prüfen
Console.WriteLine("Mein eigenes Programm ist gestartet!");
build: Meldungen über die Erstellung, noch keine eigene Programmausgabe.run: Deine Nachricht erscheint.Consol: Bei diesem unbekannten Namen schlägt der neue Build fehl. Korrigiere ihn zu Console und starte erneut.
Program.cs · C#
Console.WriteLine("Mein eigenes Programm ist gestartet!");

Level-up: Dein Spiel startet

Schreibe zwei WriteLine-Anweisungen: zuerst den Namen eines erfundenen Spiels, danach eine Einladung zum Spielen. Prüfe die Reihenfolge der beiden Zeilen.
Beispiellösung: Abenteuerstart
Console.WriteLine("Das Portal der Wolkeninsel");
Console.WriteLine("Dein Abenteuer beginnt jetzt!");
Die Konsole zeigt zuerst den Spieltitel und danach die Einladung in einer neuen Zeile. In einem Main-Projekt gehören beide Anweisungen in Main.
9

Erkläre es mit deinen eigenen Worten

Ein Mitschüler sagt: „Ich habe Visual Studio. Also sind C#, SDK und Runtime dasselbe.“ Erkläre ihm die vier Rollen anhand deines eigenen Projekts.
Was sollte deine Erklärung enthalten?
Du schreibst in C#. Das SDK liefert Entwicklungswerkzeuge. Die Runtime führt die Anwendung aus. Visual Studio bündelt Editor, Debugger und Werkzeuge in einer Oberfläche.
10

🏁 Checkpoint: Was sitzt schon?

  1. In welcher Datei hast du die Nachricht geändert?
  2. Wo findest du Build-Ergebnisse?
  3. Wie unterscheiden sich build und run?
  4. Warum brauchst du trotz erfolgreicher Kompilierung Tests?
Antworten zur Wiederholung
  1. Die Nachricht steht in Program.cs.
  2. Build-Ergebnisse findest du gewöhnlich im bin-Ordner.
  3. build erstellt das Projekt; run startet es und erstellt es bei Bedarf vorher.
  4. Ein Programm kann trotz gültigem Code logisch falsche Ergebnisse liefern.

Dein neuer Überblick

Du kennst die Werkzeuge hinter deinem Programm, findest die Projektdateien und kannst eine Anwendung über das Terminal erstellen und starten. SDK, IL und JIT sind technische Zusatzbegriffe; wichtig ist vor allem, dass du den Ablauf am eigenen Beispiel erklären kannst.

Deutsche Fachbegriffe

DeutschUngarisch
der Quellcodeforráskód
der Compilerfordító
die Laufzeitumgebungfuttatókörnyezet
die Projektdateiprojektfájl
die Zwischenspracheköztes nyelv
Extra: technische Details

Startdatei

Eine native Startdatei, der apphost, kann das Programm laden. Der IL-Code liegt dabei häufig in einer .dll.

Projekt und Projektmappe

Eine Projektmappe, auf Englisch solution, kann mehrere zusammengehörige Projekte enthalten. Visual Studio verwendet dafür je nach Version beispielsweise .sln oder .slnx. Für heute erkennst du vor allem Program.cs und die .csproj-Datei.

Eine andere Übersetzungsart

Native AOT erzeugt nativen Code bereits bei der Bereitstellung. Deshalb verwendet nicht jede .NET-Anwendung den hier erklärten JIT-Ablauf.
Für Lehrkräfte: Einsatz im Unterricht

Einordnung

Die Lektion ergänzt den ungarischen Lernweg im Bereich Programmieren. SDK, IL und JIT sind technische Vertiefungen zur gewählten C#-Umgebung.

Lehrplanvergleich

Die Zuordnung zu Österreich oder einem deutschen Bundesland erfolgt anhand des jeweiligen Lehrplans.

Zeitplanung

  • Kernbegriffe und angeleitete Aufgabe: etwa 45 Minuten.
  • Eigene Challenge und Wiederholung: zusätzlich 10–15 Minuten.

Wenn das SDK fehlt

Die Terminalaufgabe kann als Demonstration durch die Lehrkraft durchgeführt werden.

👾 Boss-Challenge: Brücke bauen, Testlauf starten

Ändere die Ausgabe in Program.cs zu Die Bruecke ist bereit!. Speichere. Führe zuerst dotnet build und danach dotnet run im Projektordner aus.Bei welchem Befehl erscheint deine Nachricht? Erkläre mit einem Satz, wozu der andere Befehl dient.
🔓 Lösung und Erklärung öffnen
Console.WriteLine("Die Bruecke ist bereit!");
dotnet build erstellt dein Projekt und meldet dabei mögliche Compilerfehler. dotnet run startet deine Anwendung und erstellt sie bei Bedarf vorher. Deine eigene Nachricht erscheint beim Ausführen mit run.Ein erfolgreicher Build ist der erste Checkpoint. Beim Testlauf prüfst du zusätzlich, ob die Ausgabe zu deiner Mission passt.
🏆 Skill freigeschaltet: Du kannst dein Projekt erstellen, starten und die Ausgabe prüfen.
Zur Übersicht →
← Vorherige Lektion: Mein erstes C#-ProgrammGrundlage: Magyar változat →
Technische Quellen