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 :

Problème de changement de valeurs d'une variable


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème de changement de valeurs d'une variable
    Bonjour,

    Mon problème est le suivant:

    J'ai un tableau (ou liste) de listes.
    J'ajoute des éléments aux différentes listes du tableau (ou de la liste) depuis un objets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau[i].Add(unObjet.saListe[j]);
    Une fois mes listes remplis, lorque j'effectue un changement de valeur dans l'une d'elle, la valeur de la variable de mon objet "unObjet" change également.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau[i][j] = Tableau[i][j].Replace("-", "_");
    Sauriez-vous pourquoi j'ai ce résultat là?

    Peut-être un soucis de passage par valeur ou référence mais j'ai toujours procédé de la sorte et n'avais jamais observé ce comportement là.

    En espérant que vous pourriez me venir en aide je vous remercie d'avance. Joyeux Noël à tous.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    bonjour,

    montre moi le code tout entier.

    je pense que t'as pas fait l'instanciation de tes listes du coup la liste de ton objet et la liste de ton tableau faitent référence à la même case mémoire, alors tes listes seront on peut "asynchrone" ça veut dire que si tu modifie une automatiquement l'autre le sera aussi

    cordialement,
    Mohammed.
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le +1

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse voila le code:

    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
    //List<Param>[] listParam = new List<Param>[listCL[lol].Fonctions.Count + 1];
                List<List<Param>> listParam = new List<List<Param>>();
                for (int i = 0; i < listCL[lol].Fonctions.Count; i++)
                {
                    listParam.Add(new List<Param>());
                    //listParam[i] = new List<Param>();
                    int index = 0;
                    for (int j = 0; j < listCL[lol].Online.Count; j++)
                    {
                        if (listCL[lol].Online[j].Parent == listCL[lol].Fonctions[i] && listCL[lol].Online[j].TypeParam == "Value")
                        {
                            listParam[i].Add(new Param());
                            listParam[i][index] = listCL[lol].Online[j];
                            index++;
                        }
                    }
                    for (int j = 0; j < listCL[lol].Offline.Count; j++)
                    {
                        if (listCL[lol].Offline[j].Parent == listCL[lol].Fonctions[i] && listCL[lol].Offline[j].TypeParam == "Value")
                        {
                            listParam[i].Add(new Param());
                            listParam[i][index] = listCL[lol].Offline[j];
                            index++;
                        }
                    }
                    for (int j = 0; j < listParam[i].Count - 1; j++)
                    {
                        if (listParam[i][j].Name.Contains("-")) { listParam[i][j].Name = listParam[i][j].Name.Replace("-", "_"); }
                        if ((listParam[i][j] as ParamValue).unite.Contains("ms")) { listParam[i][j].Value = (Convert.ToDouble(listParam[i][j].Value) / 1000).ToString().Replace(",", "."); (listParam[i][j] as ParamValue).unite = (listParam[i][j] as ParamValue).unite.Replace("ms", "s"); }
                        if ((listParam[i][j] as ParamValue).unite.Contains("0.01In")) { listParam[i][j].Value = (Convert.ToDouble(listParam[i][j].Value) * Convert.ToDouble(listCL[lol].GetValue("TC_CIRC_I_IN_SEC")) / 100).ToString().Replace(",", "."); (listParam[i][j] as ParamValue).unite = "A"; }
                    }
                }
    En commentaire il y a le code quand j'ai essayé avec un tableau de listes au lieu d'une liste de listes mais j'avais le même résultat;
    Par exemple l'oppération:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (listParam[i][j].Name.Contains("-")) { listParam[i][j].Name = listParam[i][j].Name.Replace("-", "_"); }
    changeait aussi la valeur contenu dans listeCL.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    à mon avis il faut que tu évites de faire comme ça :listParam[i][index] = listCL[lol].Online[j];

    je pense que ça devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    param p =new param();
    p=listCL[lol].Online[j];
    listParam[i][index] = p;
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le +1

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse, je vais essayer ça!

    Pourrais-tu m'expliquer les différences entre les deux?

Discussions similaires

  1. problème de changement de valeur d'une variable
    Par Mondhir01 dans le forum GUI
    Réponses: 0
    Dernier message: 30/05/2010, 22h45
  2. [SQL] Détection du changement de valeur d'une variable
    Par micatmidog dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/06/2007, 20h22
  3. Réponses: 8
    Dernier message: 29/03/2007, 14h48
  4. [VB.NET]Test sur changement de valeur d'une variable
    Par shinji_rem dans le forum Windows Forms
    Réponses: 9
    Dernier message: 29/11/2006, 15h53
  5. Intercepter le changement de valeur d'une variable
    Par Captain_JS dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/01/2005, 08h04

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