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

Windows Forms Discussion :

Variable globale qui ne fonctionne pas


Sujet :

Windows Forms

  1. #1
    Membre régulier

    Inscrit en
    Février 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 106
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut Variable globale qui ne fonctionne pas
    Bonjour
    mon problème cette fois est vraiment trop facile mais j'arrive pas a le résoudre.
    bon c'est tout simple, j'aimerai afficher un variable tableau a n'importe quel position qui est déclaré Public mais a se qui parait le résultat n'est pas convaincante

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public int[] pos = new int[3];
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                f1();
            }
     
            private void f1()
            {
                int[] pos={5,10,15};
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                f2();
            }
     
            private void f2()
            {
                MessageBox.Show(pos[0].ToString());
            }
        }
    }
    Le résultat est "0" alors que ça devrai être "5";
    ça a l'aire tout bête mais ce variable n'est vraiment pas globale sur tout ma feuille
    S'il-vous plait on peux me donner un coup de main ?!!

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Ce n'est pas une variable globale pour commencer. On pourrait éventuellement parler de variable "globale" s'il s'agissait d'un membre statique d'une classe statique utilisée à cette fin. Mais la notion de variable globale est fausse sinon.

    Ensuite le résultat est tout à fait normal compte tenu du code.

    Ici tu déclares et initialises un tableau de 3 entiers à la création de ton objet. A ce stade, pos contient (0,0,0).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int[] pos = new int[3];
    Ici tu déclares et initialise une variable locale à la méthode, le membre pos (variable au niveau de la classe) n'est donc pas modifié.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void f1()
    {
        int[] pos={5,10,15};
    }
    Soit tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int[] pos = { 5, 10, 5 };
    et tu supprimes la méthode f1. Sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public int[] pos;
    ...
    private void f1()
    {
        pos = new int[] { 5, 10, 15 };
    }
    Pas de questions techniques par MP

  3. #3
    Membre régulier

    Inscrit en
    Février 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 106
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut
    Merci beaucoup pour l'explication
    mais, on fait je peux pas initialiser mon tableau au début vus que cette résultat se face grâce a un traitement spéciale dans une méthode a part, mais j'aimerai bien récupérer cette résultat dans une autre fonction si il y a un moyen
    merci d'avance

  4. #4
    Membre régulier

    Inscrit en
    Février 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 106
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut re
    Bonsoir
    bon après des testes j'ai constaté que ce problème concerne seulement les tableaux.
    cela dis que les autre types de variables du genre int string .. ont une portée public sur tout la form, alors que les tableau restes résiduels sur la même fonction ou procédure
    je devrai passer mon tableau en paramètres quand j'appelle ma fonction pour pouvoir travailler avec, c'est la seul solution que j'ai trouvé
    y a t-il un autre avis ?

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public int[3] pos;
    ...
    private void f1()
    {
        pos[0] = 5;
        pos[1] = 10;
        pos[2] = 15;
    }
    ou alors, plus simple, utilise une List<int>

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

Discussions similaires

  1. Variable globale qui ne fonctionne pas
    Par alaninho dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 27/03/2015, 09h05
  2. [PHP 5.3] Variables dynamiques qui ne fonctionnent pas
    Par Gwennin dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2009, 18h12
  3. Réponses: 15
    Dernier message: 09/08/2009, 19h56
  4. Variable session qui ne fonctionne pas
    Par sheira dans le forum Langage
    Réponses: 2
    Dernier message: 21/01/2009, 19h04
  5. Réponses: 15
    Dernier message: 12/08/2008, 12h30

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