Variables globales sur tout le projet [Résolu]

kooljy
Messages postés
25
Date d'inscription
vendredi 13 juin 2003
Dernière intervention
12 mai 2006
- 18 avril 2006 à 11:01 - Dernière réponse :  WTFISTHAT
- 17 févr. 2015 à 19:32
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
Afficher la suite 

Votre réponse

15 réponses

Utilisateur anonyme - 18 avril 2006 à 12:49
0
Merci
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 !";
Commenter la réponse de Utilisateur anonyme
Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 18 avril 2006 à 13:08
0
Merci
Y'a un problème dans ton exemple Nico.. si ton ctor est privé il faut un accesseur public static.
Commenter la réponse de Lutinore
MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 18 avril 2006 à 15:25
0
Merci
http://www.csharpfr.com/codes/SINGLETON-CODE-SNIPPET_36437.aspx' target='_blank'>Classe singleton

Ou sur codyx



Mx
MVP C#
Commenter la réponse de MorpionMx
Utilisateur anonyme - 19 avril 2006 à 05:10
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 19 avril 2006 à 13:56
0
Merci
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é !
Commenter la réponse de Lutinore
MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 19 avril 2006 à 14:10
0
Merci
En fait, si, la classe est bonne...
Mais l'exemple donné n'est pas bon.


Mx
MVP C#
Commenter la réponse de MorpionMx
Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 19 avril 2006 à 18:52
0
Merci
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.
Commenter la réponse de Lutinore
cs_brico07
Messages postés
61
Date d'inscription
jeudi 12 avril 2007
Dernière intervention
16 mai 2012
- 19 avril 2007 à 17:36
0
Merci
slt!!
j'ai éssayé le code nicola ca ne donne  que si mon connecteur est public!!!
Commenter la réponse de cs_brico07
MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 19 avril 2007 à 17:53
0
Merci
Waouh, 1 an pile !!!

Mx
MVP C# 
Commenter la réponse de MorpionMx
MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 19 avril 2007 à 17:55
0
Merci
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# 
Commenter la réponse de MorpionMx
cs_brico07
Messages postés
61
Date d'inscription
jeudi 12 avril 2007
Dernière intervention
16 mai 2012
- 19 avril 2007 à 18:06
0
Merci
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
Commenter la réponse de cs_brico07
MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 19 avril 2007 à 18:18
0
Merci
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# 
Commenter la réponse de MorpionMx
cs_brico07
Messages postés
61
Date d'inscription
jeudi 12 avril 2007
Dernière intervention
16 mai 2012
- 19 avril 2007 à 18:31
0
Merci
mersi bcp !!!!!!!!!!!!!!
ca marche!!
mais maintenant je dois chercher à le comprendre
sinon mersi!!!!!!!!!!
Commenter la réponse de cs_brico07
cs_souley003
Messages postés
1
Date d'inscription
dimanche 19 octobre 2003
Dernière intervention
11 septembre 2008
- 11 sept. 2008 à 15:03
0
Merci
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 !";
Commenter la réponse de cs_souley003

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.