# Einführung in C# ## Ziel dieser Einheit In dieser Einheit lernst du: - wie ein C#-Programm aufgebaut ist - was eine Klasse ist - wie die Main-Methode funktioniert - wie eine Konsolenausgabe erfolgt - grundlegende Konzepte der Programmiersprache --- ## 1. Aufbau eines C#-Programms Ein C#-Programm besteht aus: - using-Anweisungen - Namespace - Klasse - Main-Methode --- ## 2. using-Anweisungen using System; Erläuterung: - entspricht dem Import in Java - ermöglicht Zugriff auf vorhandene Klassen Beispiel: - Console - Collections --- ## 3. Namespace namespace _01_Einführung; Erläuterung: - organisiert Klassen - vergleichbar mit Paketen in Java - muss nicht zwingend der Ordnerstruktur entsprechen --- ## 4. Klasse internal class Einführung Erläuterung: - jede Anwendung besteht aus Klassen - Klassenname frei wählbar - `internal` ist der Standard-Zugriffsmodifizierer --- ## 5. Die Main-Methode private static void Main(string[] args) Erläuterung: - Einstiegspunkt des Programms - wird beim Start zuerst ausgeführt - jedes Programm besitzt genau eine Main-Methode --- ## 6. Konsolenausgabe Console.WriteLine("Hello, World!"); Erläuterung: - Ausgabe in der Konsole - `Console` ist eine Klasse - `WriteLine` ist eine Methode --- ### Farbausgabe Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Ausgabe in Grün."); Console.ResetColor(); --- ## 7. Datentypen in C# ### Ganzzahlen short s = 1; Int16 i16 = 1; int i = 1; Int32 i32 = 1; long l = 1; Int64 i64 = 1; Erläuterung: - es gibt Kurz- und Langschreibweise - `int` ist ein Alias für `Int32` --- ### Fließkommazahlen float f = 1.1F; double d = 1.1; decimal m = 1.1M; Erläuterung: - `float` benötigt ein `F` - `decimal` benötigt ein `M` --- ### Boolean bool b = true; Boolean boolean = true; --- ### Byte byte b1 = 255; Erläuterung: - in C# ist `byte` unsigned - Wertebereich: 0 – 255 --- ### Unsigned und Signed Varianten uint ui = 1; sbyte sb = -128; --- ### Zeichen char c1 = 'a'; --- ## 8. String und Eingabe string? eingabe = Console.ReadLine(); Erläuterung: - `?` bedeutet nullable - Wert kann `null` sein --- ### Null-Propagation eingabe = eingabe?.Substring(2); - Methode wird nur ausgeführt, wenn Wert nicht null ist --- ### String-Verarbeitung string zeichenkette = String.Concat("Hallo", "Welt"); --- ## 9. Eingabe und Konvertierung eingabe = Console.ReadLine(); int eingabeInt; --- ### Convert mit Exception try { eingabeInt = Convert.ToInt32(eingabe); } catch (Exception ex) { Console.WriteLine(ex.Message); } --- ### TryParse bool parseOk = Int32.TryParse(eingabe, out eingabeInt); Erläuterung: - kein Exception-Handling nötig - Ergebnis wird als bool zurückgegeben --- ## 10. Tastatureingaben ConsoleKeyInfo consoleKeyInfo = Console.ReadKey(true); Erläuterung: - liest einzelne Tasteneingaben --- ## 11. Listen IList liste = new List(); liste.Add(1); liste.Add(42); Erläuterung: - `IList<>` → Interface - `List<>` → Implementierung --- ### Iteration foreach (int z in liste) Console.WriteLine(z); --- ## 12. Arrays ### Eindimensionale Arrays int[] intArray = { 0, 1, 2 }; --- ### Mehrdimensionale Arrays int[,] array2D = { { 0, 1, 2 }, { 3, 4, 5 } }; --- ### Jagged Arrays int[][] jagged = { new int[] { 0, 1 }, new int[] { 2, 3, 4 } }; --- ## 13. Nullable int? zahl = null; Erläuterung: - Wertetyp kann null sein - zusätzlicher Zustand: „kein Wert“ --- bool? bNull = null; - ermöglicht drei Zustände: - true - false - null --- ## Zusammenfassung - C#-Programme bestehen aus Klassen und einer Main-Methode - using-Anweisungen ermöglichen den Zugriff auf Bibliotheken - Datentypen haben Aliase (`int`, `Int32`) - Nullable-Typen erlauben null-Werte - Listen und Arrays dienen zur Datenverwaltung - Eingaben und Konvertierungen sind zentrale Bestandteile --- ## Verständnisfragen - Was ist der Einstiegspunkt eines C#-Programms? - Was ist der Unterschied zwischen `int` und `Int32`? - Warum benötigt `float` ein `F`? - Was bedeutet `string?`? - Was ist der Unterschied zwischen `Convert` und `TryParse`?