Rechercher : dans
Par :

[C#]Static variable

Dernière réponse le 5 jui 2004 à 16:57:11 teebo, le 2 jui 2004 à 16:47:02 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [C#]Static variable » dans :
Langage C - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Langage C++ - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans...
Les variables en C++ VoirLes variables en C++ 1. Les différents types de variables 1.1 bool 1.2 char 1.3 unsigned short int 1.4 short int 1.5 unsigned long int 1.6 long int 1.7 int (16 bits) 1.8 int (32 bits) 1.9 unsigned int (16 bits) 1.10 unsigned int (32...
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...

1

tafiscobar, le 3 jui 2004 à 01:34:32

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!!!

Répondre à tafiscobar

2

teebo, le 5 jui 2004 à 09:34:17

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

Répondre à teebo

3

Canard007, le 5 jui 2004 à 09:42:41

Tu peux faire confiance au garbage collector..c'est celui de java en mieux ^^

Répondre à Canard007

4

teebo, le 5 jui 2004 à 09:47:54

: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

Répondre à teebo

5

JSS, le 5 jui 2004 à 11:18:54

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.:-)

Répondre à JSS

6

JSS, le 5 jui 2004 à 11:24:26


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.­...

Répondre à JSS

7

teebo, le 5 jui 2004 à 11:42:13

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

Répondre à teebo

8

JSS, le 5 jui 2004 à 11:55:38

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.:-)

Répondre à JSS

9

teebo, le 5 jui 2004 à 11:58:14

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

Répondre à teebo

10

JSS, le 5 jui 2004 à 12:07:28

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

Répondre à JSS

11

teebo, le 5 jui 2004 à 12:31:12

Pas grave, c'est lundi ;o)

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

Répondre à teebo

12

 tafiscobar, le 5 jui 2004 à 16:57:11

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!!!

Répondre à tafiscobar