OVH Cloud OVH Cloud

variable statique bizarre ?

3 réponses
Avatar
Thierry Schembri
J'ai une question, je vais essayer (pour une fois) d'être clair :

J'ai une classe ne contenant que des variables & fonctions statiques :

public class toto
{
private static String var = "pouet";

public static String changevar
{
get {return var;}
set {var = value;}
}

public static void zorro()
{
affiche(var);
}
}

(en supposant que "affiche" affiche la variable à l'écran).

1er essai : je fais :

toto.zorro();

Ca affiche "pouet", normal.

2ème essai : je fais :

toto.changevar = "glop";
toto.zorro();

Ca affiche "glop", normal.

J'arrete le programme, je reviens dans VS et je relance le 1er essai
(toto.zorro() seul). Ca affiche "glop" !!! Il me semble que ça devrait
afficher "pouet" !!! Je quitte, je reviens dans VS, je rebuild le
projet, je relance, ca affiche "pouet".

Bref, si je ne rebuild pas tout entre deux essais, la valeur contenue
dans var n'est pas réinitialisée avec "pouet" à chaque lancement, mais
il conserve la valeur initialisée lors de la précédente execution du
programme !!!

C'est pas possible hein ????

3 réponses

Avatar
Christophe Gricourt
Non - c'est pas possible.


J'ai une question, je vais essayer (pour une fois) d'être clair :

J'ai une classe ne contenant que des variables & fonctions statiques :

public class toto
{
private static String var = "pouet";
public static String changevar
{
get {return var;}
set {var = value;}
}
public static void zorro()
{
affiche(var);
}
}
(en supposant que "affiche" affiche la variable à l'écran).

1er essai : je fais :

toto.zorro();

Ca affiche "pouet", normal.

2ème essai : je fais :

toto.changevar = "glop";
toto.zorro();
Ca affiche "glop", normal.

J'arrete le programme, je reviens dans VS et je relance le 1er essai
(toto.zorro() seul). Ca affiche "glop" !!! Il me semble que ça devrait
afficher "pouet" !!! Je quitte, je reviens dans VS, je rebuild le
projet, je relance, ca affiche "pouet".

Bref, si je ne rebuild pas tout entre deux essais, la valeur contenue
dans var n'est pas réinitialisée avec "pouet" à chaque lancement, mais
il conserve la valeur initialisée lors de la précédente execution du
programme !!!

C'est pas possible hein ????



Avatar
Thierry Schembri
et pourquoi ?
Avatar
DVDB
En regardant dans le taskmanager il doit y avoir une tache
<nomduprojet>.vshost.exe. C'est ce process qui garde la valeur dans la
variable statique. En recompilant, le processus est killé et relancé sous un
autre ID, donc la variable statique est reinitialisée.

"Thierry Schembri" a écrit :

et pourquoi ?