OVH Cloud OVH Cloud

using vs bloc simple

9 réponses
Avatar
bart s.
bj,

j'aimerais savoir si il y a une difference entre les deux ecritures
suivantes:

using (Font MyFont = new Font("Arial", 10.0f))
{
...
}

vs

{
Font MyFont = new Font("Arial", 10.0f);
...
}

merci.

9 réponses

Avatar
bart s.
D'apres mes tests la premiere ecriture declare MyFont en lecture seul (c
pourtant pas ds l'aide)

"bart s." a écrit dans le message de news:
41a3ccb1$0$17794$
bj,

j'aimerais savoir si il y a une difference entre les deux ecritures
suivantes:

using (Font MyFont = new Font("Arial", 10.0f))
{
...
}

vs

{
Font MyFont = new Font("Arial", 10.0f);
...
}

merci.




Avatar
Paul Bacelar
Regardez du coté de IDispose et cela sera lumineux ;-)
--
Paul Bacelar

"bart s." wrote in message
news:41a3ccfb$0$17799$
D'apres mes tests la premiere ecriture declare MyFont en lecture seul (c
pourtant pas ds l'aide)

"bart s." a écrit dans le message de news:
41a3ccb1$0$17794$
> bj,
>
> j'aimerais savoir si il y a une difference entre les deux ecritures
> suivantes:
>
> using (Font MyFont = new Font("Arial", 10.0f))
> {
> ...
> }
>
> vs
>
> {
> Font MyFont = new Font("Arial", 10.0f);
> ...
> }
>
> merci.
>
>




Avatar
bart s.
je n'ai trouvé que l'interface IDisposable et je vois pas bien le rapport,
je suppose que c'est en rapport avec le GC, et j'imagine que le GC est
utilisé que l'on utilise using ... ou un simple bloc avec variable locale ?



"Paul Bacelar" a écrit dans le message
de news:
Regardez du coté de IDispose et cela sera lumineux ;-)
--
Paul Bacelar

"bart s." wrote in message
news:41a3ccfb$0$17799$
D'apres mes tests la premiere ecriture declare MyFont en lecture seul (c
pourtant pas ds l'aide)

"bart s." a écrit dans le message de
news:
41a3ccb1$0$17794$
> bj,
>
> j'aimerais savoir si il y a une difference entre les deux ecritures
> suivantes:
>
> using (Font MyFont = new Font("Arial", 10.0f))
> {
> ...
> }
>
> vs
>
> {
> Font MyFont = new Font("Arial", 10.0f);
> ...
> }
>
> merci.
>
>








Avatar
Paul Bacelar
La methode Dispose est appelé automatiquement sur l'accolade fermante.
Syntaxe Sugar ;-)
--
Paul Bacelar

"bart s." wrote in message
news:41a3e8dd$0$17776$
je n'ai trouvé que l'interface IDisposable et je vois pas bien le rapport,
je suppose que c'est en rapport avec le GC, et j'imagine que le GC est
utilisé que l'on utilise using ... ou un simple bloc avec variable locale


?



"Paul Bacelar" a écrit dans le message
de news:
> Regardez du coté de IDispose et cela sera lumineux ;-)
> --
> Paul Bacelar
>
> "bart s." wrote in message
> news:41a3ccfb$0$17799$
>> D'apres mes tests la premiere ecriture declare MyFont en lecture seul


(c
>> pourtant pas ds l'aide)
>>
>> "bart s." a écrit dans le message de
>> news:
>> 41a3ccb1$0$17794$
>> > bj,
>> >
>> > j'aimerais savoir si il y a une difference entre les deux ecritures
>> > suivantes:
>> >
>> > using (Font MyFont = new Font("Arial", 10.0f))
>> > {
>> > ...
>> > }
>> >
>> > vs
>> >
>> > {
>> > Font MyFont = new Font("Arial", 10.0f);
>> > ...
>> > }
>> >
>> > merci.
>> >
>> >
>>
>>
>
>




Avatar
bart s.
oui j'avais bien compris, mais je suposse que c'est aussi le cas lorsque
l'on declare une variable locale a un bloc comme:

{
Font MyFont = new Font("Arial", 10.0f);
...
}



"Paul Bacelar" a écrit dans le message
de news:
La methode Dispose est appelé automatiquement sur l'accolade fermante.
Syntaxe Sugar ;-)
--
Paul Bacelar

"bart s." wrote in message
news:41a3e8dd$0$17776$
je n'ai trouvé que l'interface IDisposable et je vois pas bien le
rapport,
je suppose que c'est en rapport avec le GC, et j'imagine que le GC est
utilisé que l'on utilise using ... ou un simple bloc avec variable locale


?



"Paul Bacelar" a écrit dans le
message
de news:
> Regardez du coté de IDispose et cela sera lumineux ;-)
> --
> Paul Bacelar
>
> "bart s." wrote in message
> news:41a3ccfb$0$17799$
>> D'apres mes tests la premiere ecriture declare MyFont en lecture seul


(c
>> pourtant pas ds l'aide)
>>
>> "bart s." a écrit dans le message de
>> news:
>> 41a3ccb1$0$17794$
>> > bj,
>> >
>> > j'aimerais savoir si il y a une difference entre les deux ecritures
>> > suivantes:
>> >
>> > using (Font MyFont = new Font("Arial", 10.0f))
>> > {
>> > ...
>> > }
>> >
>> > vs
>> >
>> > {
>> > Font MyFont = new Font("Arial", 10.0f);
>> > ...
>> > }
>> >
>> > merci.
>> >
>> >
>>
>>
>
>








Avatar
oui, mais pour des raisons liées au fonctionnement du GC
cela sera fait bien plus tard et prendra plus de temps.
Si une classe a une méthode Dispose() il est toujours
mieux de l'appeler dès que l'on a plus besoin de l'objet

-----Original Message-----
oui j'avais bien compris, mais je suposse que c'est


aussi le cas lorsque
l'on declare une variable locale a un bloc comme:

{
Font MyFont = new Font("Arial", 10.0f);
...
}



"Paul Bacelar" a


écrit dans le message
de news:
La methode Dispose est appelé automatiquement sur




l'accolade fermante.
Syntaxe Sugar ;-)
--
Paul Bacelar

"bart s." wrote in




message
news:41a3e8dd$0$17776$
je n'ai trouvé que l'interface IDisposable et je vois






pas bien le
rapport,
je suppose que c'est en rapport avec le GC, et






j'imagine que le GC est
utilisé que l'on utilise using ... ou un simple bloc






avec variable locale
?



"Paul Bacelar" a






écrit dans le
message
de news:
> Regardez du coté de IDispose et cela sera






lumineux ;-)
> --
> Paul Bacelar
>
> "bart s." wrote in






message
> news:41a3ccfb$0$17799$
>> D'apres mes tests la premiere ecriture declare






MyFont en lecture seul
(c
>> pourtant pas ds l'aide)
>>
>> "bart s." a écrit






dans le message de
>> news:
>> 41a3ccb1$0$17794$
>> > bj,
>> >
>> > j'aimerais savoir si il y a une difference entre






les deux ecritures
>> > suivantes:
>> >
>> > using (Font MyFont = new Font("Arial", 10.0f))
>> > {
>> > ...
>> > }
>> >
>> > vs
>> >
>> > {
>> > Font MyFont = new Font("Arial", 10.0f);
>> > ...
>> > }
>> >
>> > merci.
>> >
>> >
>>
>>
>
>










.



Avatar
Ambassadeur Kosh
> oui, mais pour des raisons liées au fonctionnement du GC
cela sera fait bien plus tard et prendra plus de temps.
Si une classe a une méthode Dispose() il est toujours
mieux de l'appeler dès que l'on a plus besoin de l'objet



pour un fichier, ça reviendrait à écrire ça.

{
Stream stream = null ;
try
{
Stream stream = File.Open...
...
}
finally
{
if(stream!=null)
stream.Close() ;
}
}

using, c'est le beurre et l'argent du beurre. on écrit simplement ça

using(Stream stream = File.Open...)
{
...
}

ce qui est necessaire, c'est que l'objet implante IDisposable.

l'accolade est un marqueur de portée, pas un marqueur de durée de vie (qui
au moins plus grande). Disposer tout de suite, c'est écrire du code (en
plus) , et prendre le risque de marquer un objet potentiellement utilisé par
d'autres. les considérations d'ordre trollesque sur le GC sont à prendre en
considération comme il se doit.
Avatar
je ne sais pas si je suis un troll, mais contrairement à
d'autres je me suis demandé un jour quelle était la
différence entre Dispose() et Close() pour les classes
qui exposent les deux.

C'est un peu plus fatiguant, mais évite le ridicule dans
les forums.

Ceci étant dit en toute amitié...

-----Original Message-----
oui, mais pour des raisons liées au fonctionnement du




GC
cela sera fait bien plus tard et prendra plus de temps.
Si une classe a une méthode Dispose() il est toujours
mieux de l'appeler dès que l'on a plus besoin de




l'objet

pour un fichier, ça reviendrait à écrire ça.

{
Stream stream = null ;
try
{
Stream stream = File.Open...
...
}
finally
{
if(stream!=null)
stream.Close() ;
}
}

using, c'est le beurre et l'argent du beurre. on écrit


simplement ça

using(Stream stream = File.Open...)
{
...
}

ce qui est necessaire, c'est que l'objet implante


IDisposable.

l'accolade est un marqueur de portée, pas un marqueur de


durée de vie (qui
au moins plus grande). Disposer tout de suite, c'est


écrire du code (en
plus) , et prendre le risque de marquer un objet


potentiellement utilisé par
d'autres. les considérations d'ordre trollesque sur le


GC sont à prendre en
considération comme il se doit.


.



Avatar
Ambassadeur Kosh
> C'est un peu plus fatiguant, mais évite le ridicule dans
les forums.



le principal interet du Dispose dans le contete du using sur un Stream,
c'est qu'il fait un Close. liberer la mémoire n'a pas d'interet en soi.
l'interet de using n'est pas tant dans la libération mémoire que dans
l'action associée à celle ci.

encore eut il fallut savoir lire.