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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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).