cuq
Messages postés344Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention21 mars 2008
-
27 mai 2005 à 17:27
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
1 juin 2005 à 19:15
Petite question,
Pour passer des variables à une fonction ou une subroutine est-il préférable d'utiliser : byVal ou byRef
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 27 mai 2005 à 17:57
le plus rapide c'est Byref, pas de création de copie.
le plus sécurisant c'est ByVal, impossible de modifier la variable puisque c'est une copie temporaire.
par défaut c'est byRef en vb6 et byVal en vb.Net
cs_drahcir
Messages postés745Date d'inscriptionmardi 30 novembre 2004StatutMembreDernière intervention15 septembre 20095 27 mai 2005 à 17:30
Salut,
je dirais byVal mais je ne connaît pas bien le mot clé byRef (je ne pratique pas le vb.net depuis trés longtemps). En fait les réponses m'intéressent aussi.
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 27 mai 2005 à 18:52
faux
byref c'est l'addresse mémoire de la variable qui est passé et byval est la valeur de la variable
donc byref passe une addresse et byval crée une nouvelle variable en mémoire et la passe à la fonction. En mémoire c'est 2 chose totallement différente qui est faite masi il est conseiller d'utiliser byval en tout temps pour éviter les bugs et byref quand on veut retourné plusieurs retour
par contre, un tableau est toujuors passé en référence et jamais en valeur, puisqu'un tableau est en fait un tableau d'addresse mémoire et non un tableau de valeur
-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 27 mai 2005 à 19:02
Salut
Ca sert à quoi de poster des sources/tutos si personne n'a le courage de faire une toute petite recherche sur le site ?
Ah lalala : http://www.vbfrance.com/code.aspx?ID=7081
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 27 mai 2005 à 19:46
ah oki ouin si tu considère que créé une valeur en mémoire et passer son addresse de la nouvelle valeur créé c'est une adresse mémoire ouin .... j'aime juste pas comment tu l'as dit c'est tout
-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
bidoch78
Messages postés67Date d'inscriptionmercredi 27 février 2002StatutMembreDernière intervention 2 décembre 2005 30 mai 2005 à 10:58
De toute facon, quelque part une variable fait référence à un pointeur en mémoire, le faite de spécifier Byval ou Byref permet de connaitre au compilateur la maniere dont tu vas utiliser la variable, et c'est qui compte pour le développeur. Si tu as fais du c++ et que tu testes les passages par référence ou par copie d'un objet, en tracant le constructeur tu vois clairement que lors du passage par valeur, une nouvelle instance de l'objet est créée (et la clairement cela peut entrainer des pbs de performance), lorsque tu travailles avec une chaine de caractere et que tu la passes par ByVal le compilateur va réallouer en mémoire la chaine et ensuite la passer en parametre puis elle va etre détruite en sortie de la fonction (pour simplifier la chose), alors qu'avec ByRef c'est la meme chaine qui va etre passée.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 31 mai 2005 à 11:11
hé oui pas aussi simple le ByVal et ByRef,
je ne sais pas si on peut encore parler de "valeur" et de "référence" ici,
en ce sens que ByRef renvoie un pointeur sur la chaîne, et que ByVal
renvoie la valeur contenu par ce pointeur qui est aussi une adresse,
donc une référence !
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 1 juin 2005 à 19:15
lol Bidoch78
Je te rassure, il ne faut surtout pas raisonner en terme de vitesse, mais d'utilisation de la variable : ByVal fait une copie de la variable, alors que ByRef travaille avec la variable passée : Le résultat est profondemment différent !
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)