Exemple #1
0
        static void Main(string[] args)
        {
            MeinDelegate del = new MeinDelegate(MeineMethode);

            string ergebnis = del.Invoke(5, 7.9);

            Console.WriteLine(ergebnis);
            Console.ReadLine();
        }
Exemple #2
0
        static void Main(string[] args)
        {
            //Zuweisung der Addiere()-Methode zur einer Variablen vom Typ MyDelegate
            MeinDelegate delegateVariable = new MeinDelegate(Addiere);

            //Ausführung der Delegate-Variablen
            int ergebnis = delegateVariable(12, 45);

            Console.WriteLine(ergebnis);

            //Neuzuweisung der Variable (Kurzschreibweise)
            delegateVariable = Subtrahiere;

            ergebnis = delegateVariable(12, 45);
            Console.WriteLine(ergebnis);

            //Zuweisung einer zweiten Methode zur Delegate-Variablen
            delegateVariable += Addiere;

            //Bei Ausführung einer Delegate-Variablen werden alle referenzierten Methoden in der Reihenfolge ihrer Zuweisung ausgeführt.
            ///Nur die letzte Methode gibt einen Rückgabewert zurück
            ergebnis = delegateVariable(12, 45);
            Console.WriteLine(ergebnis);

            //Erstellung und Ausgabe einer Liste der in der Variablen gespeicherten Methode
            var Methodenliste = delegateVariable.GetInvocationList().ToList();

            foreach (var item in Methodenliste)
            {
                Console.WriteLine(item.Method);
                Debug.Print(item.Method.ToString());
            }

            //Löschen einer Referenz aus der Variablen
            delegateVariable -= Addiere;
            //Löschen aller Zuweisungen
            delegateVariable = null;

            //FUNC<> / ACTION<> /PREDICATE<> sind die von C# vordefinierten Delegate-Typen
            Func <int, int, int> meinFunc = Addiere;

            ergebnis = meinFunc(12, 45);
            Console.WriteLine(ergebnis);

            FühreAus(meinFunc);
            FühreAus(Addiere);

            List <string> städteListe = new List <string>()
            {
                "Berlin", "München", "Köln", "Bonn"
            };

            //ANONYME METHODEN sind Methoden, welche nicht mit Kopf und Körper geschrieben stehen, sondern nur innerhalb von Delegate-Variablen
            ///existieren

            //Übergabe einer Methode an eine andere Methode
            string gefundeneStadt = städteListe.Find(SucheStadtMitM);

            Console.WriteLine(gefundeneStadt);

            //Übergabe der Methode als anonyme Methode
            gefundeneStadt = städteListe.Find(
                delegate(string stadt)
            {
                return(stadt.StartsWith("M"));
            });

            //Übergabe der anonymen Methode in LAMBDA-Schreibweise (Lang und Kurz)
            gefundeneStadt = städteListe.Find((string stadt) => { return(stadt.StartsWith("M")); });
            gefundeneStadt = städteListe.Find(stadt => stadt.StartsWith("M"));

            //Weiteres Bsp für die Übergabe einer anonymen Methode in Lambda (Sortierung der Einträge nach dem ersten Buchstaben)
            städteListe = städteListe.OrderBy(stadt => stadt[0]).ToList();
            foreach (var item in städteListe)
            {
                Console.WriteLine(item);
            }

            //weiteres Bsp der Lambda-Schreibweise (Methode empfängt zwei int und gibt deren Summe als String zurück)
            Func <int, int, string> funky = (x, y) => (x + y).ToString();

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            //Zuweisung der Addiere()-Methode zur einer Variablen vom Typ MyDelegate
            MeinDelegate delegateVariable = new MeinDelegate(Addiere);
            //Ausführung der Delegate-Variablen
            int erg = delegateVariable(12, 45);

            Console.WriteLine(erg);

            //Neuzuweisung der Variablen mittels Kurzschreibweise
            delegateVariable = Subtrahiere;

            erg = delegateVariable(12, 45);
            Console.WriteLine(erg);

            //Zuweisung einer zweiten Methode zur Delegate-Variablen. Die Ausführung erfolgt in der Reihenfolge der Zuweisung. Nur der Rückgabewert
            ///der zuletzt ausgeführten Methode wird an den Aufrufer zurückgegeben.
            delegateVariable += Addiere;

            erg = delegateVariable(12, 45);
            Console.WriteLine(erg);

            //Erstellen einer Liste der in der Variablen gespeicherten Methode
            var delegateMethoden = delegateVariable.GetInvocationList().ToList();

            //Ausgabe dieser Liste
            foreach (var item in delegateMethoden)
            {
                Console.WriteLine(item.Method);
            }

            delegateVariable -= Subtrahiere;

            //FUNC<> / ACTION<> /PREDICATE<> sind die von C# vordefinierten Delegate-Typen
            Func <int, int, int> myFunc = Addiere;

            myFunc += Subtrahiere;

            erg = myFunc(12, 23);
            Console.WriteLine(erg);

            FühreAus(Addiere);


            List <string> stringListe = new List <string>();

            stringListe.Add("Hallo");
            stringListe.Add("Ciao");
            stringListe.Add("Moin");
            stringListe.Add("Guten Morgen");

            //ANONYME METHODEN sind Methoden, welche nicht mit Kopf und Körper geschrieben stehen, sondern nur innerhalb von Delegate-Variablen
            ///existieren

            //Übergabe einer Methode an eine andere Methode
            string ergebnis = stringListe.Find(SucheWortMitM);

            Console.WriteLine(ergebnis);

            //Übergabe der Methode als anonyme Methode
            ergebnis = stringListe.Find(delegate(string input)
            {
                return(input[0].Equals('M'));
            });

            //Übergabe der anonymen Methode in LAMBDA-Schreibweise
            ergebnis = stringListe.Find((string input) => { return(input[0].Equals('M')); });

            //Übergabe der anonymen Methode in vollständig gekürzter LAMBDA-Schreibweise
            ergebnis = stringListe.Find(input => input[0].Equals('M'));

            Console.ReadKey();
        }
Exemple #4
0
 //Funktion mit Delegate-Übergabeparameter
 public static void FühreAus(MeinDelegate dele)
 {
     dele(45, 45);
 }
Exemple #5
0
 public static void FühreAus(MeinDelegate method)
 {
     Console.WriteLine(10 + method(10, 78));
 }