Variables globales sur tout le projet

Résolu
kooljy
Messages postés
25
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 mai 2006
- 18 avril 2006 à 11:01
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
- 25 nov. 2020 à 15:01
Bonjour,

Je souhaite avoir un tableau qui me permettra de stocker des données à n'importe quel endroit du projet.

En vb on utilise un module et on y déclare la variable en "public".

En c#, j'ai pas trouvé de module.

Comment faire ? merci

15 réponses

MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
56
19 avril 2007 à 17:55
Si le constructeur est public, ca n'est plus un singleton...
Va voir les liens que j'ai donné un peu au dessus

Mx
MVP C# 
1
cs_brico07
Messages postés
60
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
16 mai 2012
1
19 avril 2007 à 18:06
slt!
j'ai lus mais j'ai rien compris!!
peux tu m'aider car je veux déclarer des variables globales pour un projet en C#
mersi
1
Utilisateur anonyme
18 avril 2006 à 12:49
Le moyen le plus simple est de creer une classe, exemple :



namespace Projet

{

// This is the class where every globals variables are defined

// We must do a class in C# because globals variables don't exist

public sealed class Globals

{

public static Globals g = new Globals();

private Globals() {} // Private constructor



// Globals variables

public int var1,var2;

public string message1,message2;

}

}



Pour faire un appel a tes variables dans une autre partie de ton programme, il faut instancier ta classe, exemple :



Globals g = new Globals();



g.var1= 18/2+y;

g.message1 = "Les variables sont globales !";
0
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
42
18 avril 2006 à 13:08
Y'a un problème dans ton exemple Nico.. si ton ctor est privé il faut un accesseur public static.
0

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

Posez votre question
MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
56
18 avril 2006 à 15:25
http://www.csharpfr.com/codes/SINGLETON-CODE-SNIPPET_36437.aspx' target='_blank'>Classe singleton

Ou sur codyx



Mx
MVP C#
0
Utilisateur anonyme
19 avril 2006 à 05:10
Euh, j'ai defini ma classse de variables globales comme ca et il n'y a pqs eu besoin d'accesseur public static et le programme semble fonctionner sans erreur.
0
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
42
19 avril 2006 à 13:56
Il faut que tu révises le model Singleton.. Elle ne marche pas ta classe, on ne peut tout simplement pas l'instancier comme tu le dis dans l'exemple et pour cause ton constructeur est privé !
0
MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
56
19 avril 2006 à 14:10
En fait, si, la classe est bonne...
Mais l'exemple donné n'est pas bon.


Mx
MVP C#
0
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
42
19 avril 2006 à 18:52
Oui mais tu es comme moi tu vois bien qu'il a voulu implémenter un singleton et qu'il y'a un gros problème de design.. la variable "g" devrait être privé et devrait y'avoir un accesseur public static.
0
cs_brico07
Messages postés
60
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
16 mai 2012
1
19 avril 2007 à 17:36
slt!!
j'ai éssayé le code nicola ca ne donne  que si mon connecteur est public!!!
0
MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
56
19 avril 2007 à 17:53
Waouh, 1 an pile !!!

Mx
MVP C# 
0
MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
56
19 avril 2007 à 18:18
Oui bien sur,

Imaginons que tu aies une classe GlobalVars qui te permet de stocker des valeurs communes dans toutes ton application.

Voici la classe, avec une variable de type string "Var1"
<hr />internal

sealed
class
GlobalVars
{

   private
static
GlobalVars instance =
null;

   private
static
object syncRoot =
new
Object();

   public
static
GlobalVars Instance
   {

      get
      {

         if (instance ==
null)
         {

            lock (syncRoot)
            {

               if (instance ==
null)
               {
                     instance =
new
GlobalVars();
               }
            }
         }

         return (instance);
      }
   }

   private GlobalVars() { }

   public
string Var1 =
"test"; // Une premiere variable
   
}
<hr />
Tu peux maintenant accéder ainsi a la variable Var1 depuis n'importe quelle classe de ton application :
GlobalVars.Instance.Var1 = "toto";

Mx
MVP C# 
0
cs_brico07
Messages postés
60
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
16 mai 2012
1
19 avril 2007 à 18:31
mersi bcp !!!!!!!!!!!!!!
ca marche!!
mais maintenant je dois chercher à le comprendre
sinon mersi!!!!!!!!!!
0
Merci .... svp ....
0
cs_souley003
Messages postés
1
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
11 septembre 2008

11 sept. 2008 à 15:03
SALUT!
je suis un nouveau en programmation C#
je m'inspire du code ci-dessous (celui nico4nicolas), et je renseigne ma variable message1 à la connexion à mon application, j'aimerais récupérer la valeur de message1 pour l'utiliser dans un champ d'une fenêtre de mon application, et je sais pas comment faire, merci de m'aider.

namespace Projet
{
// This is the class where every globals variables are defined
// We must do a class in C# because globals variables don't exist
public sealed class Globals
{
public static Globals g = new Globals();
private Globals() {} // Private constructor

// Globals variables
public int var1,var2;
public string message1,message2;
}
}

Pour faire un appel a tes variables dans une autre partie de ton programme, il faut instancier ta classe, exemple :

Globals g = new Globals();

g.var1= 18/2+y;
g.message1 = "Les variables sont globales !";
0
https://code.fr/c#/globalvar
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
Modifié le 25 nov. 2020 à 15:02
bonjour abc
- Eh oui dire bonjour c'est l'abc de la politesse
- de plus ta réponse n'aboutit à rien

- et avec 12 ans de retard au minimum et sur un sujet résolu en plus
0