Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Windows > Windows Forms
Windows Forms Forum d'entraide sur le développement Windows Forms & Applications Windows. Avant de poster -> Articles Windows Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 22h38   #1
Furior
Invité régulier
 
Inscription : juin 2011
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 17
Points : 7
Points : 7
Par défaut ByVal ou ByRef (imbrication) ?

Bonjour,

J'ai une zone d'ombre en ce qui concerne ma compréhension du passage par valeur ou par référence.

Soit la classe suivante:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
    Public Class BitmapClass
 
        Private _myBmp As Bitmap
 
        Public Property MyBmp As Bitmap
            Get
                Return _myBmp
            End Get
            Set(ByVal value As Bitmap)
                _myBmp = value
            End Set
        End Property
 
        Public Sub New(ByRef bmp As Bitmap)
                EvBmp = bmp
        End Sub
 
    End Class
Dans une autre partie du code, j'instancie un nouvel objet de cette classe:
Code :
1
2
3
 
Dim monBitmap As New Bitmap()
Dim monInstance As New BitmapClass(monBitmap)
La propriété MyBmp de l'objet monInstance est-elle une copie de l'objet monBitmap ou simplement une copie de la référence de l'objet monBitmap ?


J'ai ma propre idée, mais je ne suis sûr de rien.

Le constructeur de BitmapClasse passe monBitmap par référence (ByRef). Puis la référence de monBitmap est copiée (ByVal) lors de l'appel à la méthode Set de la property MyBmp.

Pour moi monInstance.MyBmp() serait donc une copie de la référence sur l'objet monBitmap.


Mon raisonnement est-il juste ?

Auquel cas passages des passages successifs par valeur ou par référence sont cumulatifs (par exemple: ByRef -> ByVal -> ByRef donnerait la référence d'une copie de la référence d'un objet).
Furior est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2012, 12h01   #2
lead8209
Membre confirmé
 
Homme
Développeur informatique
Inscription : août 2010
Messages : 188
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 188
Points : 253
Points : 253
J'ai pas lu car c'est du VB et j'y comprend rien.
Fais un test change bitmap1 et fais un bitmap1.save(Desktop/2.bmp) puis bitmap2.save(Desktop/2.bmp).

Si c'est une référence tu auras la même image puisque changer la valeur du bmp1 applique le changement sur bmp2; sinon les images seront différentes puisque les deux bmp sont différents.

J'espère ne pas avoir dit de conneries
lead8209 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h21.


 
 
 
 
Partenaires

Hébergement Web