IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Portée de namespace et variable globale [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 85
    Par défaut Portée de namespace et variable globale
    Bonjour,
    Habitué à Delphi, je patine un peu dans le C#. Voilà mon soucis (cela vous paraitra trivial, mais tanpis):
    Dans mon fichier principal j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    namespace MCMTSimulator
    {
        public class Start
        {
            // creer maTache en utilisant uniquement le nom maTache 
        }
    }
    et dans le fichier Variables, j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    namespace MCMTSimulator
    {
        public class VariablesGlobales
        {
            Thread maTache;
        }
    }
    Comment accéder à maTache directement dans le fichier principal, du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maTache= new Thread(new TreadStart(maTacheLoop);
    Merci de votre aide, en faite, mon problème se résume à comment creer un fichier avec mes variables globales et comment y accéder directement.

  2. #2
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 661
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    namespace MCMTSimulator
    {
        public static class VariablesGlobales
        {
            public static Thread maTache;
        }
    }
    Qu'on utilise comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VariablesGlobales.maTache= new Thread(new TreadStart(maTacheLoop);
    Le static dans la déclaration de classe est optionnel, mais il permet de s'assurer que toutes les variables de la classe soient statiques aussi.

    Après je ne connais pas le Delphi mais en C#, les variables globales sont souvent signe d'une mauvaise structure, on peut s'en passer dans 99% des cas.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 85
    Par défaut
    J'ai fait cela, dans le premier fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    namespace MCMTSimulator
    {
        public class G
        {
            public Thread maTache;
        }
    }
    Au passage, impossible de mettre cela en static. Ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    namespace MCMTSimulator
    {
        public class Start
        {
            public void Depart()
            {
                G.maTache = new Thread(new ThreadStart(maTacheLoop));
            }
            public void maTacheLoop()
            { }
        }
    }
    j'ai l'erreur: Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'G.maTache'. C'est pas encore gagné le C# avec moi, plein d'habitudes à changer.

  4. #4
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Citation Envoyé par michastro Voir le message
    Au passage, impossible de mettre cela en static.
    C'est-à-dire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    namespace MCMTSimulator
    {
        public class G
        {
            public static Thread maTache; // <-- ici le champ est déclaré au niveau de la classe et pas de l'instance
        }
    }
    Mais quoi qu'il en soit, si tu codes en C# il faut que tu laisses de côté les idiomes Delphi et que tu adoptes les idiomes C#, la façon d'aborder les sujets est très différentes, surtout depuis les évolutions autour .Net Core.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/04/2011, 18h41
  2. Cout de variables globales dans un namespace
    Par Klaim dans le forum C++
    Réponses: 20
    Dernier message: 09/07/2008, 14h52
  3. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 19h22
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo