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:
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
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
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim monBitmap As New Bitmap() Dim monInstance As New BitmapClass(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).
Partager