[C#]Static variable

Fermé
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 - 2 juil. 2004 à 16:47
tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 - 5 juil. 2004 à 16:57
Salut tout le monde,
Une petite question, j'ai admettons:

public class MaClasseAMoiQueJAi
{
      public MaClasseAMoiQueJAi()
     {
             if (monStringCache!="")
             {
                      MaString=monStringCache;
              }
              else
              {
                       MessageBox("Blabla");
               }
      }
      private static string monStringCache="";
      public string MaString;
}


Bon je sais une string public c'est pas beau, mais c'est juste pour la question...
Bref, je voudrais savoir une fois que ma string private est assignee (static je rappelle), quand elle sera remise a "", plusieurs possibilite a mon avis mais je ne sais pas laquelle est la bonne:

1-Jamais (ca m'etonnerait si je ne serialise/deserialise pas)
2-Quand je quitte l'application
3-Quand je quitte la librairie
4-Quand je n'ai plus aucune instance (ca me parait bizzare...)

Voila, j'aimerai savoir :o)

Merci

.  .  Dieu a inventé le chat
\_/  pour que l'homme puisse caresser le tigre

5 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
5 juil. 2004 à 09:34
Salut teutates...
C# est un langage imperatif, oui. Les chaines de caracteres sont de fait identifier par leur adresse memoire, de toutes facons il est impossible de changer la valeur d'une chaine directement, une nouvelle affectation affecte en fait un autre endroit dans la memoire avec la nouvelle valeur... Il ne s'agit aps ici d'un processus mais d'une variable...
En fait je craignais que la statique se reinitialise des que je n'aurais plus d'instance vivante de ma classe, apparement non, elle se reinitialise quand je coupe et relance le programme...Comme je suis dans une dll, c'est meme quand le exe qui a lance la dll se coupe...a priori...mais ca c'est pour le moment plus dur a tester, j'ai pas encore entiermenet confiance dans le Garbage collector...

.  .  Dieu a inventé le chat
\_/  pour que l'homme puisse caresser le tigre
1
tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 177
3 juil. 2004 à 01:34
je ne connais pas C#, je donne juste mon avis => Je pense q C# est un langage impératif (au sens suite d'actions et une variable est identifiée par son adresse mémoire) et donc je pense que tant q tu ne remets pas manuellement la string a "", elle ne sera jamais remplacée, son adresse sera juste réallouée a un autre processus lorsq la processus sera terminé et donc on ne touche pas a son contenu.
C'est tout ce q j'avais a dire, si t'as plus d'infos, n'hesites, cela m'interresserai.

tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
5 juil. 2004 à 09:42
Tu peux faire confiance au garbage collector..c'est celui de java en mieux ^^
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
5 juil. 2004 à 09:47
:o)
Oui mais je ne m'y suis pas encore fait completement :o) Pour une fois que un truc Microsoft a l'air vraiment bien je ne peux m'empecher de chercher ou est le gros probleme :o)

.  .  Dieu a inventé le chat
\_/  pour que l'homme puisse caresser le tigre
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JSS Messages postés 3745 Date d'inscription jeudi 22 avril 2004 Statut Contributeur Dernière intervention 17 décembre 2004 32
5 juil. 2004 à 11:18
Bonjour ou Bonsoir,

D'apres mes souvenirs ta variable est initialisée a la construction de ta classe a "". (on commence par faire toutes les initialisations avant de regarder le contenu des methodes)

Pour savoir quand ta variable sera effacer il faut connaitre l'ordre d'appel de ton programme ... logiquement a partir du moment ou tu ne fait plus refereence a cette classe elle devrait disparaitre ...

JSS.souvenirs.en.compilo.:-)
0
JSS Messages postés 3745 Date d'inscription jeudi 22 avril 2004 Statut Contributeur Dernière intervention 17 décembre 2004 32
5 juil. 2004 à 11:24

logiquement a partir du moment ou tu ne fait plus refereence a cette classe elle devrait disparaitre ...


apparament tu penses autrement ... qu'elles sont tes preuves ?

JSS.bizarre.c'etait.pas.comme.ca.qu'on.me.l'avait.expliquer....
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
5 juil. 2004 à 11:42
Ben il s'agit d'une methode Static (de classe autrement dit pour les puristes, et non d'instance), donc si lorsque l'instance disparait, la static aussi on perd un peu de l'interet...Moyennant ca c'est le risque que je craignais mais apres un essai vite fait ca a l'air d'aller...

.  .  Dieu a inventé le chat
\_/  pour que l'homme puisse caresser le tigre
0
JSS Messages postés 3745 Date d'inscription jeudi 22 avril 2004 Statut Contributeur Dernière intervention 17 décembre 2004 32 > teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011
5 juil. 2004 à 11:55
d'accord donc en fait ta classe est statique aussi ?

Ce qui signifie que toutes les classes statiques sont mises en place au début par le compilo et sont effacer uniquement a la fin ... ca me semble logique en y reflechissant un peu plus :-)

JSS.en.apprends.tous.les.jours.:-)
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793 > teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011
5 juil. 2004 à 11:58
Comment veux tu qu'une classe soit statique? Au pire tu peux virer ton constructeur voire la mettre abstract, mais static n'a aucun sens pour une classe 8-)

.  .  Dieu a inventé le chat
\_/  pour que l'homme puisse caresser le tigre
0
JSS Messages postés 3745 Date d'inscription jeudi 22 avril 2004 Statut Contributeur Dernière intervention 17 décembre 2004 32 > teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011
5 juil. 2004 à 12:07
en fait j'avais pas fait attention au fait que ta variable etait statique ....
je sous entendait par classe statique le fait que ta classe possedait des variables statiques :-)
désolé je suis un peu dans le gaz ce matin :-)
et désolé pour cet abus de langage

JSS
0