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 :

[C# 2.0] Comment initialiser des données membres statiques ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut [C# 2.0] Comment initialiser des données membres statiques ?
    Bonjour,

    J'ai une class C_Form_saisie qui doit contenir une collection statique d'erreur (code erreur + libellé)

    Cette classe est utilisée dans un projet Web et peut être instanciée sur plein de pages aspx.

    Mon problème c'est que je ne sais pas pas comment initialiser cette collection...
    Vu que ma classe peut être instanciée, j'ai déjà plusieurs constructeurs surchargés...
    Est-ce qu'on peut déclarer un constructeur spécifique aux données statiques, et si oui comment le déclarer et ou dans mon application devrais-je appeler cette méthode?
    En plus les constructeurs 'normaux' sont déjà des méthodes statiques, bref je suis en plein brouillard

    Quelqu'un pourrait-il limer mon ignorance impardonnable?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    Tu peux déclarer un constructeur statique qui sera chargé d'initialisé ta collection, il suffit de rajouter le mot clée static devant ton constructeur. Ce constructeur sera appelé par .Net automatiquement avant toute tentative d'utilisation de tes variables membres statiques.

    En plus les constructeurs 'normaux' sont déjà des méthodes statiques, bref je suis en plein brouillard
    Non un constructeur "normal" (d'instance donc, pas de classe) n'est pas statique.

  3. #3
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Salut gdKenny,

    Si j'ai bien compris, tu as besoin d'un constructeur statique

  4. #4
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    burned

  5. #5
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut
    Hola!!

    Sous cette effusion je ne peux que m'incliner et tester ce fameux 'constructeur statique'...

    Les constructeurs 'normaux' sont des méthodes qui s'appliquent sur une classe et pas sur une instance on est bien d'accord? Ca ressemble quand même à le définition d'une méthode statique ca non?

    Sinon on ne peux pas gérer soit même l'execution d'un constructeur statique?

    Merci à tous pour votre réactivité!!

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Les constructeurs 'normaux' sont des méthodes qui s'appliquent sur une classe et pas sur une instance on est bien d'accord?
    Un constructeur normal ça n'existe pas, tu as les constructeurs d'instance (non statique) et les constructeurs de classe (statique).

    Sinon on ne peux pas gérer soit même l'execution d'un constructeur statique?
    Je suis pas sur de comprendre. Si tu demandes à pouvoir exécuter ce constructeur au moment précis ou tu le souhaites, alors non ce n'est pas possible. Enfin ce n'est pas tout a fait vrai, pour savoir qd un constructeur statique va être exécuté, regarde de ce côté. Cela dit en général tu n'as pas besoin de cette précision puisque tout ce qui t'importe c'est que tes variables statiques soient bien initialisées (et une seule fois) avant de les utiliser, ce qui est garanti par le CLR.

  7. #7
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Un accesseur me semble tout indiqué dans ton cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // ma collection
    private static MyErrorCollection _error = null;
    // mon accesseur
    public static MyErrorCollection MesErreurs
    {
      get
      {
        // si pas encore instanciée
        if(_error == null)
          // roule ma poule
          _error = new MyErrorCollection();
        // on retourne forcément une instance valide
        return _error;
      }
    }
    Pour utiliser ta collection, il te faudra systématiquement passer par l'accesseur (propriété statique), qui te l'instanciera si besoin.

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

Discussions similaires

  1. Comment récupérer des données de Outlook Express ?
    Par frenchsting dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 29/04/2005, 11h07
  2. Réponses: 3
    Dernier message: 20/01/2005, 19h19
  3. CFile : comment lire des données
    Par romeo9423 dans le forum MFC
    Réponses: 3
    Dernier message: 25/10/2004, 19h10
  4. Comment récuperer des données entrées au clavier?
    Par Elisée A. dans le forum MFC
    Réponses: 2
    Dernier message: 13/02/2004, 07h22

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