Posez votre question Signaler

[C#]Static variable

teebo 33591Messages postés 14 octobre 2004Date d'inscription ModérateurStatut 24 février 2011Dernière intervention - Dernière réponse le 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
Lire la suite 

[C#]Static variable »

12 réponses
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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!!!
Ajouter un commentaire
Réponse
+0
moins plus
Tu peux faire confiance au garbage collector..c'est celui de java en mieux ^^
Ajouter un commentaire
Réponse
+0
moins plus
: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
Ajouter un commentaire
Réponse
+0
moins plus
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.:-)
JSSteebo - 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
teeboteebo - 5 juil. 2004 à 12:31
Pas grave, c'est lundi ;o)

.  .  Dieu a inventé le chat
\_/  pour que l'homme puisse caresser le tigre
tafiscobar - 5 juil. 2004 à 16:57
tu m'as confondu avec teutates la, regardes bien, suis tafiscobar ...
Sinon, je pense coe toi, coe la varaible est statique et donc partagée par tous, elle est mis a un emplacement et normalement il ne sera supprimé q lorsq le exe sera killé.

tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
Ajouter un commentaire
Ce document intitulé « [C#]Static variable » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook