Autor Beitrag
Dibbi411
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Sa 29.10.11 14:39 
Guten Tag,

ich hätte einige kurze Fragen zum Thema Delegate. Unten ist ein kurzer Quelltext an dem ihr mir hoffentlich ein wenig die Augen öffnen könnt.

- Wie wird der Vor und Nachname Clara Schumann, der in String Vorname und Nachname gespeichert ist an die Methoden übergeben?

- In der Methode tues, steht als letztes Parameter delAnrede deLa ... welcher Sinn steckt dahinter? und welche Funktionalität löst es aus?



ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
    class Program
    {
        // Deklaration
        public delegate void delAnrede(string sVorname, string sNachname);

        // Methoden mit dieser Signatur (hier: statische):
        public static void Du(string sV, string sN)
        {
            Console.WriteLine("Sei herzlich willkommen, {0}!", sV);
        }

        public static void SieFrau(string sV, string sN)
        {
            Console.WriteLine("Seien Sie herzlich willkommen, Frau {0}!", sN);
        }

        public static void Tschuess(string sV, string sN)
        {
            Console.WriteLine("Tschüss!");
        }

        public static void tues(string sV, string sN, delAnrede delA)
        {
            delA(sV, sN);
        }

        static void Main(string[] args)
        {
            int iAlter = 10;
            string Vorname = "Clara";
            string Nachname = "Schumann";
            delAnrede aktuelleAnrede;

            if (iAlter < 20)
                aktuelleAnrede = new delAnrede(Du);
            //  aktuelleAnrede = Du; // funktioniert auch
            else
                aktuelleAnrede = new delAnrede(SieFrau);
            tues(Vorname, Nachname, aktuelleAnrede);
            // MulticastDelegate:
            aktuelleAnrede += new delAnrede(Tschuess);
            tues(Vorname, Nachname, aktuelleAnrede);

        }
    }
}




Vielen Dank im voraus! =)

Moderiert von user profile iconKha: C#-Tags hinzugefügt
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 29.10.11 17:24 
user profile iconDibbi411 hat folgendes geschrieben Zum zitierten Posting springen:
- Wie wird der Vor und Nachname Clara Schumann, der in String Vorname und Nachname gespeichert ist an die Methoden übergeben?

Der wird zunächst einfach als Parameter an die Methode tues übergeben:


user profile iconDibbi411 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
 
39:
/* ... */
            tues(Vorname, Nachname, aktuelleAnrede);

Und die Methode tues übergibt es dann weiter an das Delegate:

user profile iconDibbi411 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
 
22:
23:
24:
25:
/* ... */
        public static void tues(string sVstring sN, delAnrede delA)
        {
            delA(sVsN);
        }


user profile iconDibbi411 hat folgendes geschrieben Zum zitierten Posting springen:
- In der Methode tues, steht als letztes Parameter delAnrede deLa ... welcher Sinn steckt dahinter? und welche Funktionalität löst es aus?

Ein Delegate ist so etwas wie eine Verknüpfung mit einer Methode. Wenn du das Delegate hast, kannst du die Methode aufrufen, auch wenn du nicht weißt, wie sie heißt. Die Methode tues muss ja irgendwie wissen, was sie tun soll - und das steht eben in diesem Parameter.