Paramètre de type Delegué d'une méthode
Bonjour,
Ma question concerne l'affectation d'un paramètre de type délégué .
Le delegué DelegateTri a été déclaré ainsi:
Code:
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);}
} |
//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
TriDescendant
Code:
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
Code:
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);
} |
Voici un exemple d'appel de la méthode TrierEtAfficher
Code:
1 2 3 4 5 6 7 8 9
|
public void DemoTri(int[] tableau){
TrierEtAfficher(tableau, TriAscendant);
Console.WriteLine();
TrierEtAfficher(tableau, TriDescendant);
} |
Je ne comprends pas pourquoi le deuxième paramètre de la méthode TrierEtAfficher est une méthode .
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:
1 2 3 4 5 6
|
public void DemoTri(int[] tableau)
{
DelegateTri tri = TriAscendant;
tri(tableau);
} |
Merci beaucoup à vous.
Cordialement.
new_wave