Bonjour,
Je débute en VB .NET et la question que je me pose est la suivante :
Est-il possible de passer des fonctions en argument (comme en C/C++) ?
Merci
 [VB.NET] Fonctions en argument ?
 [VB.NET] Fonctions en argument ?
				
				
						
						
				Bonjour,
Je débute en VB .NET et la question que je me pose est la suivante :
Est-il possible de passer des fonctions en argument (comme en C/C++) ?
Merci
 
 
				
				
						
						
				Uniquement si elles ont une valeur de retour (int, collection...)
 
 
				
				
						
						
				Ok mais on fait comment ?
Disons que j'ai une fonction prenant en argument une fonction renvoyant un integer :
Qu'est-ce que je dois mettre après "As" pour dire que c'est une fonction qui est passée en argument ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
[Balise [Code] ajoutée par freegreg]
[Pensez-y, vous-même, la prochaine fois. Merci]
[Bienvenue]
 
 
				
				
						
						
				ety bien tu mets le type de donnée de la fonction envoyer
exemple
ainsi calcul sera égale a (val1 + val2) - val3
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@+
Hirochirak
 
 
				
				
						
						
				salut,
je ne crois que cela soit de cela qu'il parle,
dans l'exemple tu passes la valeur de retour et pas la fonction elle-même
en C/C++, on passe pas un pointeur de fonction ? (je suis pas expert en C/C++ désolé)
à ma connaissance, il faut utiliser AddressOf et passer un delegate à ta fonction
ex des msdn
fais des recherches dans ce sens peut-être
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 
				
				
						
						
				Mais là tu utilises des fonctions à partir d'une autre, il n'y a rien de spécial.
Moi ce que je veux, c'est passer directement une fonction (ou procédure) en paramètre à une autre fonction.
Exemple classique :
Après je peux faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Seulement, je ne sais pas quel doit être le prototype de traitementsListe, concernant la partie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
 
 
				
				
						
						
				Désolé chman, les posts se sont croisés.
Ouais, c'est de ça que je parle et en C/C++ on utilise des pointeurs de fonction. Sauf qu'en VB.NET il n'y a pas de pointeurs, donc je me posais la question.
Je vais regarder du côté de Adress Of.
Merci
 
 
				
				
						
						
				ouais il faut utiliser les delegates,
ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
 
				
				
						
						
				C'est bon, j'ai trouvé et ça marche impec, quelle classe!
Il faut créer un délégué qui correspond au type des fonctions qu'on passe en argument. Dans mon exemple précédent, les fonctions passées sont de type int->int->int (2 paramètres int et un int retourné).
Donc pour créer le délégué, il faut faire :
Le prototype de la fonction traitementsListe devient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Après, pour utiliser la fonction traitementsListe, on fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
J'ai essayé avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
et j'ai bien iSommeListe qui vaut 10 et iProduitListe qui vaut 24.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Le code complet pour ceux qui veulent tester rapidos :
Voilà !
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
[Tag [Résolu] ajouté par freegreg]
[Pensez-y, vous-même, la prochaine fois. Merci]
Partager