begin process at 2010 02 09 18:44:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Exécution

 > 

byVal ou byRef


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

byVal ou byRef

vendredi 27 mai 2005 à 17:27:49 | byVal ou byRef

cuq

Petite question,

Pour passer des variables à une fonction ou une subroutine est-il préférable d'utiliser : byVal ou byRef

Quel est le mode le plus rapide ?

Merci
vendredi 27 mai 2005 à 17:30:17 | Re : byVal ou byRef

drahcir

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.

@+ 
vendredi 27 mai 2005 à 17:57:06 | Re : byVal ou byRef

Gobillot

Réponse acceptée !
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

Daniel
vendredi 27 mai 2005 à 18:02:28 | Re : byVal ou byRef

bidoch78

Membre Club
byval => passage du parametre par valeur (une copie de la variable est effectué)
sécurité lors de la manipulation de la variable par des fonctions

byref => passage du parametre par référence (une référence est passée)
possibilité par la fonction de modifié la variable

dans Vb6, byref est normalement plus rapide que byval (pas necessairement sous .Net)
 
Bidoch78
vendredi 27 mai 2005 à 18:19:00 | Re : byVal ou byRef

Gobillot

vous faites rire avec références et valeurs.
valeur veut dire qu'on s'intéresse à la valeur c'est à dire au contenu de la variable et référence c'est la variable qui compte.
dans tous les cas c'est toujours l'adresse d'une variable qui est passée, jamais la valeur.

Daniel
vendredi 27 mai 2005 à 18:52:08 | Re : byVal ou byRef

dragon

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
-------------------------------------------------

vendredi 27 mai 2005 à 19:02:45 | Re : byVal ou byRef

jack

Administrateur CodeS-SourceS
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)
vendredi 27 mai 2005 à 19:11:03 | Re : byVal ou byRef

Gobillot

comment faux !
c'est toujours l'adresse d'une variable qui est passée.
pour passer un tableau tu peux passer le premier élément.

Daniel
vendredi 27 mai 2005 à 19:46:17 | Re : byVal ou byRef

dragon

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
-------------------------------------------------

lundi 30 mai 2005 à 10:58:36 | Re : byVal ou byRef

bidoch78

Membre Club
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.

Bidoch78

1 2

Cette discussion est classée dans : byval, byref


Répondre à ce message

Sujets en rapport avec ce message

CreateRemoteThread déclaration ? [ par VladDracula ] Après la lecture d'offsets, l'écriture dans la mémoire, je me suis attaqué a l'injection de dll.Pour faire un programme tout bête je me suis inspiré d IThumbnailCache [ par Vici1 ] Bonjour,Je travaille sur un projet VB 2005 pour créer un explorateur avec des cases à cocher.Il est presque abouti.J'ai un pb pour récupérer les thumb btnAjouter.Enabled = txtAjout.Text.Trim() <> [ par lima900 ] Bonjour, je vien de commencer la programation evenementielle en vb2008 et j'ai une petite procedure ke je recontre et je comprend pa son utilité et s' Probleme d'adaptation entre l'ecriture d'une api sous VB6 et VB2008 [ par jojac ] Bonjour a tous,Voila plusieur jours que je cherche comment bloquer quelque fonctionnalité de windows, du genre gestionnaire de tache par appuie sur ct point d'entrée dll introuvable [ par gaga38 ] Salut à tous,Voilà je suis débutante en VB6 et je me heurte à un problème dont je n'arrive pas à trouver la solution sur le net Voilà, je suis en trai graphique vs panel [ par aminetsdi6 ] bonjour je suis debutant en vb.net je veux dessiner un graphique dans un panel ou un pictureboxvoila mon code Public <fo Probleme d'écriture dans la base de registre [ par thom8994 ] Bonjour,Je suis en train de faire un programme d'édition de de texte RTF et je voudrais associé mon programme avec les fichier portant l'extension *.r Rapatrier un tableau de string de ma DLL [ par andrebernard ] Bonjour à tousJ'ai une DLL standard (donc non activeX) qui est ecrite dans un autre language.Dans cette DLL, j'ai des fonctions qui me retournent des Recupération d'une chaine de caractères en VB6 à partir d'une DLL en C [ par gaga38 ] Bonjour à tous, Me revoilà toujours avec des petits soucis de communication entre une DLL faites en C par mes petites mains et mon code VB6.Tout d'abo pb avec opening connection [ par domxaline ] j'ecris ce prg pour opening connection. Imports System.Data Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales