OVH Cloud OVH Cloud

Instancier un objet

2 réponses
Avatar
David Bouchard
Salut, j'ai une question bête que je me pose depuis que j'utilise cette
façon d'instancier un objet. Lorsque je fait ceci, que ce passe t'il par
rapport à mon objet créer puisque celui-ci n'est pas accessible par une
variable.
g.FillPath(New SolidBrush(Couleur_Point), Courbe_Path)

J'aurais pu faire :

dim Brush as New SolidBrush(Couleur_Point)

g.FillPath(Brush, Courbe_Path)

Dans ce cas, je peux ensuite appeler dispose de solidbrush mais dans l'autre
cas, de qu'elle façon ce comporte t'il en mémoire. Est-il détruit
immédiatement après. Suis-je mieux d'éviter cette approche dans le cas ou je
dois instancié plusieurs fois dans une itération le SolidBrush.

Merci
David

2 réponses

Avatar
Thomas Marencic [MS]
Bonjour,

dans le premier cas, c'est le garbage collector qui se charge d'appeler la
méthode Finalize de la classe SolidBrush qui va appeler la méthode Dispose.

g.FillPath(New SolidBrush(Couleur_Point), Courbe_Path)



Tu ne maitrises pas à priori son déclanchement.

Dans le deuxième cas, tu maitrise complétement la durée de vue de la
ressource associée à l'objet .NET.

dim Brush as New SolidBrush(Couleur_Point)

g.FillPath(Brush, Courbe_Path)



Brush.Dispose

Pour tout les classes .NET auxquelles sont associées une ressource Windows
(Fichier, fenêtre...) il faut absolument utiliser la méthode Dispose ou
Close.

De plus, pour répondre au troisième point tu seras meilleur en terme de
performance (mutualisation des instances) et en exploitation de tes
ressources machine.

Cordialement.
Thomas MARENCIC

"David Bouchard" wrote in message
news:%
Salut, j'ai une question bête que je me pose depuis que j'utilise cette
façon d'instancier un objet. Lorsque je fait ceci, que ce passe t'il par
rapport à mon objet créer puisque celui-ci n'est pas accessible par une
variable.
g.FillPath(New SolidBrush(Couleur_Point), Courbe_Path)

J'aurais pu faire :

dim Brush as New SolidBrush(Couleur_Point)

g.FillPath(Brush, Courbe_Path)

Dans ce cas, je peux ensuite appeler dispose de solidbrush mais dans
l'autre cas, de qu'elle façon ce comporte t'il en mémoire. Est-il détruit
immédiatement après. Suis-je mieux d'éviter cette approche dans le cas ou
je dois instancié plusieurs fois dans une itération le SolidBrush.

Merci
David







Avatar
David Bouchard
Merci, ca répond à ce que je croyais mais j'aimais mieux m'en assurer.


"Thomas Marencic [MS]" a écrit dans le
message de news: eL$
Bonjour,

dans le premier cas, c'est le garbage collector qui se charge d'appeler la
méthode Finalize de la classe SolidBrush qui va appeler la méthode


Dispose.

> g.FillPath(New SolidBrush(Couleur_Point), Courbe_Path)

Tu ne maitrises pas à priori son déclanchement.

Dans le deuxième cas, tu maitrise complétement la durée de vue de la
ressource associée à l'objet .NET.

> dim Brush as New SolidBrush(Couleur_Point)
>
> g.FillPath(Brush, Courbe_Path)

Brush.Dispose

Pour tout les classes .NET auxquelles sont associées une ressource Windows
(Fichier, fenêtre...) il faut absolument utiliser la méthode Dispose ou
Close.

De plus, pour répondre au troisième point tu seras meilleur en terme de
performance (mutualisation des instances) et en exploitation de tes
ressources machine.

Cordialement.
Thomas MARENCIC

"David Bouchard" wrote in message
news:%
> Salut, j'ai une question bête que je me pose depuis que j'utilise cette
> façon d'instancier un objet. Lorsque je fait ceci, que ce passe t'il par
> rapport à mon objet créer puisque celui-ci n'est pas accessible par une
> variable.
> g.FillPath(New SolidBrush(Couleur_Point), Courbe_Path)
>
> J'aurais pu faire :
>
> dim Brush as New SolidBrush(Couleur_Point)
>
> g.FillPath(Brush, Courbe_Path)
>
> Dans ce cas, je peux ensuite appeler dispose de solidbrush mais dans
> l'autre cas, de qu'elle façon ce comporte t'il en mémoire. Est-il


détruit
> immédiatement après. Suis-je mieux d'éviter cette approche dans le cas


ou
> je dois instancié plusieurs fois dans une itération le SolidBrush.
>
> Merci
> David
>
>
>
>
>