static void Main(string[] args) { #region Schritt3 Console.WriteLine("\n ### COSTUM DELEGATE ###"); MeinDelegat meinDelegat = new MeinDelegat(Addiere); //int resultat = meinDelegat.Invoke(2, 3); // es funktioniert auch ohne Invoke() int resultat = meinDelegat(2, 3); Console.WriteLine($"resultat: {resultat}"); //meinDelegat = meinDelegat + Subtrahiere; // kürzer: meinDelegat += Subtrahiere; resultat = meinDelegat(3, 4); Console.WriteLine($"resultat: {resultat}"); #endregion #region Vordefinierte Delegaten Console.WriteLine("\n ### FUNC ###"); // <arg1type, arg2type, returntype> Func <int, int, int> meinFuncDelegat = Addiere; meinFuncDelegat += Subtrahiere; Console.WriteLine($"meinFuncDelegat(5,6): {meinFuncDelegat(5,6)}"); #endregion #region Use method with callback Console.WriteLine("\n ### CALLBACK ###"); int ergebnis = FühreAus(Addiere, 4, 5); Console.WriteLine($"ergebnis: {ergebnis}"); #endregion #region arrow // Arrow-Function / Pfeilfunktion / Lambda Console.WriteLine("\n ### ARROW ###"); // int ergebnis2 = FühreAus((int a, int b) => { return a * b; }, 5, 6); int ergebnis2 = FühreAus((int a, int b) => a * b, 5, 6); Console.WriteLine($"ergebnis2: {ergebnis2}"); #endregion #region Lists & Delegates Step2 Console.WriteLine("\n ### Lists & Delegates ###"); List <string> Städteliste = new List <string>() { "Karlsruhe", "Hamburg", "Hannover", "Stuttgart" }; string gefundeneStadt = Städteliste.FindLast(SucheStadtMitH); Console.WriteLine($"gefundeneStadt: {gefundeneStadt}"); Console.WriteLine("\n ### Lists & Arrowfunctions ###"); // gefundeneStadt = Städteliste.FindLast(); //mitK Console.WriteLine($"gefundeneStadt: {gefundeneStadt}"); #endregion Console.ReadKey(); }
static void Sortiere(string[] s, MeinDelegat meinDelegat) { int n = s.Length; for (int i = 1; i < n; i++) { String temp = s[i]; int j = i - 1; while (j >= 0 && temp.Length < s[j].Length) { s[j + 1] = s[j]; j--; } s[j + 1] = temp; } }
static void Sort(int[] arr, MeinDelegat d, bool Reverse = false) { int len = arr.Length; for (int i = 1; i < len; i++) { for (int j = 0, stop = len - i; j < stop; j++) { if (Reverse ? !d(arr[j], arr[j + 1]) : d(arr[j], arr[j + 1])) { swap(j, j + 1); } } } void swap(int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } }
static void Main(string[] args) { #region Schritt3 MeinDelegat meinDelegat = new MeinDelegat(Addiere); //int resultat = meinDelegat.Invoke(2, 3); //es funktioniert auch ohne Invoce() int resultat = meinDelegat(2, 3); Console.WriteLine($"resultat: {resultat}"); //meinDelegat = meinDelegat + Subtrahiere; //kürzer: meinDelegat += Subtrahiere; resultat = meinDelegat(3, 4); Console.WriteLine($"resultat: {resultat}"); #endregion Console.ReadKey(); }
static void Main(string[] args) { int[] arr = { 9, 29, 3, 11, 15, 16, 42, 31 }; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Kontrollausgabe unsortiert: \n"); Console.ResetColor(); Ausgabe(arr); MeinDelegat d = new MeinDelegat(XgroesserY); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\nKontrollausgabe aufsteigend sortiert: \n"); Console.ResetColor(); Sort(arr, d); Ausgabe(arr); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("\nKontrollausgabe absteigend(reversed) sortiert: \n"); Console.ResetColor(); Sort(arr, d, true); Ausgabe(arr); Console.ReadKey(); }
static void Main(string[] args) { string[] arr = { "Beere", "Autobahnpolizist", "Tee" }; int n = arr.Length; foreach (string s in arr) { Console.WriteLine(s); } MeinDelegat delegat = AlaengerB; Sortiere(arr, delegat); foreach (string s in arr) { Console.WriteLine(s); } delegat = AeB; Sortiere(arr, delegat); foreach (string s in arr) { Console.WriteLine(s); } Console.ReadKey(); }