Bonjour,
Ma question concerne l'affectation d'un paramètre de type délégué .
Le delegué DelegateTri a été déclaré ainsi:
//On a ensuite affecté au delegué tri la méthode TriAscendant, puis , plus loin, dans le code on affecte au delegué tri la méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class TrieurDeTableau{ private delegate void DelegateTri(int[] tableau); private void TriAscendant(int[] tableau){ Array.Sort(tableau);} }
TriDescendant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public class TrieurDeTableau { [ Code supprimé pour plus de clarté ] public void DemoTri(int[] tableau) { DelegateTri tri = TriAscendant; tri(tableau); foreach (int i in tableau) { Console.WriteLine(i); } Console.WriteLine(); tri = TriDescendant; tri(tableau); foreach (int i in tableau) { Console.WriteLine(i); } } }
Voici le code de la méthode TrierEtAfficher suivant
Voici un exemple d'appel de la méthode TrierEtAfficher
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 private void TrierEtAfficher(int[] tableau, DelegateTri methodeDeTri){ methodeDeTri(tableau); foreach(int i in tableau){ Console.WriteLine(i); }
Je ne comprends pas pourquoi le deuxième paramètre de la méthode TrierEtAfficher est une méthode .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public void DemoTri(int[] tableau){ TrierEtAfficher(tableau, TriAscendant); Console.WriteLine(); TrierEtAfficher(tableau, TriDescendant); }
Normalement, si j'ai bien compris,ce doit être un nom de variable de type delegué et pas un nom de méthode qui doit apparaître en deuxième paramètre.
Ensuite, lorsque la méthode TrierEtAfficher est appelée, je vois bien que le deuxième paramètre est la méthode TriAscendant
qui est en effet une méthode vers laquelle doit pointer une variable de type DelegateTri.
Je vous remercie beaucoup de bien vouloir m'aider à comprendre pourquoi la variable methodeDeTri est de type DelegateTri.
Je pensais que seul un nom de variable de type DelegateTri est à indiquer en deuxième paramètre, telle que la variable tri ainsi déclarée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public void DemoTri(int[] tableau) { DelegateTri tri = TriAscendant; tri(tableau); }
Merci beaucoup à vous.
Cordialement.
new_wave
Partager