OVH Cloud OVH Cloud

set ou pas pour picture

6 réponses
Avatar
Jérôme VERITE
Bonjour,

dans un controle utilisateur, je cherche à affecter a la propriété picture
le contenu de la propriété image
pour cela je peux faire
usercontrol.picture = usercontrol.image
ou encore
set usercontrol.picture = usercontrol.image

laquelle de ces deux versions est la meilleure, quelle est la différence?

J'ai supposé un instant que sans le set, cela copie réellement l'image et
qu'avec ca affecte juste une reference a la meme image, mais je ne suis sûr
de rien.

Merci de m'éclairer.

Jérome

6 réponses

Avatar
Pierre Alexis
Salut Jérôme,

Tu as écrit :

dans un controle utilisateur, je cherche à affecter a la propriété picture
le contenu de la propriété image
pour cela je peux faire
usercontrol.picture = usercontrol.image
ou encore
set usercontrol.picture = usercontrol.image

laquelle de ces deux versions est la meilleure, quelle est la différence?

J'ai supposé un instant que sans le set, cela copie réellement l'image et
qu'avec ca affecte juste une reference a la meme image, mais je ne suis sûr
de rien.



Je peux me tromper, mais je pense que cela ne change rien.

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Jérôme VERITE
Bonjour,

Mes suppositions se vérifient-elles alors? à savoir une copie de l'image
avec le let et une affectation de reference avec le set.

Le set est il plus rapide que le let ou inversement?
Avatar
Jérôme VERITE
bonjour

je ne suis pas d'accord, le byval indique une copie de l'objet et non pas
une affectation de référence.

Merci

Jérôme
"Pierre Alexis" a écrit dans le message de news:
#
Salut Jérôme,

Tu as écrit :

> Mes suppositions se vérifient-elles alors? à savoir une copie de l'image
> avec le let et une affectation de reference avec le set.
>
> Le set est il plus rapide que le let ou inversement?

Non, le Set et le Let font exactement la même chose, à savoir une


affectation
de référence. En effet sit tu observes la déclaration du Let, tu verras :

Public Property Let Picture(ByVal vData As StdPicture)
Public Property Set Picture(ByVal vData As StdPicture)

Ce qui revient au même, dans les deux cas on traite un objet (donc une
référence).

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/




Avatar
Zoury
VB n'effectue pas de copie d'objet.. (les autres languages non plus je
crois..)

un objet passé byval ou byref est quand passé byref.. :O/

Essaie le :
'***
' Form1
' 1 TextBox
Option Explicit

Private Sub Form_Load()
Call Sub1(Text1)
Call Sub2(Text1)
End Sub

Private Sub Sub1(ByRef txt As TextBox)
txt.Text = "sub1"
End Sub

Private Sub Sub2(ByVal txt As TextBox)
txt.Text = "sub2"
End Sub
'***

tu obtiens "sub2" dans le TextBox ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"Jérôme VERITE" wrote in message
news:%23whCD$
bonjour

je ne suis pas d'accord, le byval indique une copie de l'objet et non pas
une affectation de référence.

Merci

Jérôme
"Pierre Alexis" a écrit dans le message de


news:
#
> Salut Jérôme,
>
> Tu as écrit :
>
> > Mes suppositions se vérifient-elles alors? à savoir une copie de


l'image
> > avec le let et une affectation de reference avec le set.
> >
> > Le set est il plus rapide que le let ou inversement?
>
> Non, le Set et le Let font exactement la même chose, à savoir une
affectation
> de référence. En effet sit tu observes la déclaration du Let, tu verras


:
>
> Public Property Let Picture(ByVal vData As StdPicture)
> Public Property Set Picture(ByVal vData As StdPicture)
>
> Ce qui revient au même, dans les deux cas on traite un objet (donc une
> référence).
>
> --
> Pierre ALEXIS - MVP Visual Basic
> Courriel & messenger :
> FAQ Visual Basic : http://faq.vb.free.fr/
>
>




Avatar
Jérôme VERITE
ok, merci

"Zoury" a écrit dans le message de news:
uirP$
VB n'effectue pas de copie d'objet.. (les autres languages non plus je
crois..)

un objet passé byval ou byref est quand passé byref.. :O/

Essaie le :
'***
' Form1
' 1 TextBox
Option Explicit

Private Sub Form_Load()
Call Sub1(Text1)
Call Sub2(Text1)
End Sub

Private Sub Sub1(ByRef txt As TextBox)
txt.Text = "sub1"
End Sub

Private Sub Sub2(ByVal txt As TextBox)
txt.Text = "sub2"
End Sub
'***

tu obtiens "sub2" dans le TextBox ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"Jérôme VERITE" wrote in message
news:%23whCD$
> bonjour
>
> je ne suis pas d'accord, le byval indique une copie de l'objet et non


pas
> une affectation de référence.
>
> Merci
>
> Jérôme
> "Pierre Alexis" a écrit dans le message de
news:
> #
> > Salut Jérôme,
> >
> > Tu as écrit :
> >
> > > Mes suppositions se vérifient-elles alors? à savoir une copie de
l'image
> > > avec le let et une affectation de reference avec le set.
> > >
> > > Le set est il plus rapide que le let ou inversement?
> >
> > Non, le Set et le Let font exactement la même chose, à savoir une
> affectation
> > de référence. En effet sit tu observes la déclaration du Let, tu


verras
:
> >
> > Public Property Let Picture(ByVal vData As StdPicture)
> > Public Property Set Picture(ByVal vData As StdPicture)
> >
> > Ce qui revient au même, dans les deux cas on traite un objet (donc une
> > référence).
> >
> > --
> > Pierre ALEXIS - MVP Visual Basic
> > Courriel & messenger :
> > FAQ Visual Basic : http://faq.vb.free.fr/
> >
> >
>
>




Avatar
Pierre Alexis
Salut Zoury,

Tu as écrit :

VB n'effectue pas de copie d'objet.. (les autres languages non plus je
crois..)



Si si les autres languages le font, il suffit de définir un copy-constructor.

un objet passé byval ou byref est quand passé byref.. :O/



Petite nuance, dans un cas on aura une copie du pointeur, dans l'autre un
pointeur vers un pointeur.

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/