Pb initialisation variable

don3omario Messages postés 7 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008 - 26 janv. 2008 à 22:01
don3omario Messages postés 7 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008 - 27 janv. 2008 à 18:13
slt a tt le monde
voici
mon pb : j'ai une classe qui s'appelle projet, qui a comme proprietes
nom et une liste de tables ( table est aussi une classe).
j'aimerais
savoir comment s'appelle la fonction qui indique dans mon cas : projet
courant  pour  ne pas tomber dans le pb de l'initialisation.
msg d'erreur : Use of unassigned local variable 'p'  

merci d'avance

6 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
26 janv. 2008 à 22:21
Salut,

Heu, tu peux reformuler stp, je ne vois pas ce que tu veux dire là.

/*
coq
MVP Visual C#
CoqBlog
*/
0
don3omario Messages postés 7 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008
27 janv. 2008 à 13:48
bonjour,

je vais reformuler ma question : j'ai une classe qui s'appelle projet. Elle a comme proprietes nom ( string ) et une liste de tables ( table est une classe ) .
Dans une fonction, je veux parcourir les tables de la classe projet  :
{
            projet p ;
            XmlSerializer ser = new XmlSerializer(p.tables.GetType());
            StreamWriter w = new StreamWriter(chemin);
            foreach (table t in p.tables)
            {
                ser.Serialize(w, t);
            }
            w.Close();
}
ça me donne une erreur dans p.tables : use of unassigned variable
je ne peux ni l'initialiser par null ni creer un nouveau projet.
j'aimerais savoir s'il existe une fonction qui indique dans mon cas : projet.courant car dans un moment donne il n'y a qu'un seul projet ouvert.
j'espere que ma question soit claire  maintenant.
merci
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
27 janv. 2008 à 14:35
Salut,

"Initialiser" p par null n'a aucun sens.

Automatiquement, non.
Tu vas devoir gérer ce contexte toi même, auquel cas tu pourras définir la propriété (statique) "Courant".

class Projet
{
   public static Projet Courant 
  {
      get
      {
         // Mettre la logique de récupération du projet courant ici.
      }
  }
}

...

Projet p = Projet.Courant;
XmlSerializer ser = new XmlSerializer(p.tables.GetType());

/*
coq
MVP Visual C#
CoqBlog
*/
0
don3omario Messages postés 7 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008
27 janv. 2008 à 16:40
salut,
D'abord je te remercie "coq" pour ta reponse. En lisant mes questions tu as pu surement constater que je suis un debutant en c#, d'ailleurs c'est mon premier projet en ce langage.
j'ai compris tres bien ce que t'as voulu dire càd l'idee que pour resoudre le pb mais j'ai pas su comment faire. Si tu pourrais detailler un peu plus comment doit être la fonction pour recuperer le projer courant.

merci d'avance
0

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

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
27 janv. 2008 à 16:59
bonjour,

class Projet
{

   private static Projet _courant =null;
   public static Projet Courant 
  {
      get
      { 
         // attention c'est pas thread safe ; passer par le constructeur static pour du thread safe ou utiliser un lock
         if(Projet._courant == null) {
              Projet._courant = new Projet();
         }
         return Project._courant;
      }
  }
}

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
don3omario Messages postés 7 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008
27 janv. 2008 à 18:13
salut,
merci JESUSONLINE pour ta reponse , je crois que je commence à m'approcher à la solution.
j'aimerais que tu m'expliques le commentaire que t'as mis dans le code de la propriété.
merci
0
Rejoignez-nous