Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité régulier
    Inscrit en
    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).

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France

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

    Informations forums :
    Inscription : août 2010
    Messages : 247
    Points : 332
    Points
    332

    Par défaut

    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •