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 :

changer la valeur d'un objet Int32


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Points : 30
    Points
    30
    Par défaut changer la valeur d'un objet Int32
    Bonjour,

    Comment peut on faire pour changer la valeur contenue dans un objet de type Int32, je pensais que cela était simple mais je n'ai rien trouvé par moi même ou dans les docs.

    Je voudrais faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                object monObjInt = 5;
                object pointeurSurMonInt = monObjInt;
                pointeurSurMonInt = -10;
                Console.WriteLine(monObjInt);//affiche 5, je voudrais -10
    Le 5 affiché me parait normal, je déférence pointeurSurMonInt en le faisant pointer sur un autre objet.

    Pour empecher cela, est ce qu'il y a quelque chose du type suivant qui existe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                object monObjInt = 5;
                object pointeurSurMonInt = monObjInt;
                pointeurSurMonInt.Value = -10; //ce qu'il pourrait marcher mais...le .Value n'existe pas
                Console.WriteLine(monObjInt);//devrait afficher 10

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Int32 est un type intégral et non un type référence.
    Qu'est ce que tu voudrais faire exactement ?
    Si c'est pour passer la variable par référence dans une méthode, tu peux utiliser ref ou out dans la déclaration de la méthode en question.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Idem, je ne comprends pas ce que tu veux faire.

    Pourquoi utiliser le type generique objet pour stocker un entier ?

    C'est pas clair ta demande.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Points : 30
    Points
    30
    Par défaut
    Je voudrais pouvoir avoir deux variables différentes qui correspondent au meme entier.

    Ainsi quand je change la valeur d'une des deux variable, l'autre est aussi changée, genre je voudrais avoir une sorte de type référence pour les entiers. Je suis peut etre pas clair...

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Peut - être en mode unsafe

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
             unsafe
                {
                    int x = 10;
                    int* y = &x;
     
                    System.Console.WriteLine(*y);
                }
    Mehdi Feki : Modérateur .Net

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par mehdi_tn
    Peut - être en mode unsafe
    Certes, mais on en revient au problème de son besoin, que je ne comprends pas.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  7. #7
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par duaner
    Je voudrais pouvoir avoir deux variables différentes qui correspondent au meme entier.
    L'intéret est ou ?

    Citation Envoyé par duaner
    Ainsi quand je change la valeur d'une des deux variable, l'autre est aussi changée, genre je voudrais avoir une sorte de type référence pour les entiers. Je suis peut etre pas clair...
    Ben tu encapsules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class MonInt32
    {
        private int i;
     
        public int Value
        {
             get { return i; }
             set { i = value; }
        }
    }
    et tu utilises MonInt32 à la place ...

    n'empeche que je suis comme les autres je comprend pas le besion la ...
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Points : 30
    Points
    30
    Par défaut
    Je vais essayer d'être plus complet et plus clair sur ce que je veux faire :

    J'ai des fonctions qui agissent sur une liste d'input :
    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
        //classe travaillant sur des inputs
        public abstract class ATraiteur
        {
            //liste des objets sur lesquels la classe travaille
            //la string est l'alias utilisé dans les fonctions de traitement et l'objet et l'objet surlekel on travail
            protected Dictionary<string, Object> _inputs = new Dictionary<string, object>();
     
            //une fonction de traitement
            public abstract void action(); 
     
            //ajout d'un objet sur lequel la classe pourra travailler
            public void addInput(string alias, object newInput)
            {
                _inputs.Add(alias, newInput);
            }
        }
    Ces fonctions ne connaissent leurs inputs que via un alias, une implémentation de cette classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        //une implémentation de ATraiteur
        public class traiteur1 : ATraiteur
        {
            public override  void action()
            {
                //il faut que _inputs contienne les entrées objectInt32 et objectMonInt32
                _inputs["objectInt32"] = 0;
                ((MonInt32)(_inputs["objectMonInt32"])).Value = 0;
            }
        }
    et voici ce que je veux faire :
    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
            static void Main(string[] args)
            {
                //creation des objets sur lesquels les fonctions traiteurs vont travailler
                int intNormal = 5;
                MonInt32 objMonInt32 = new MonInt32(5);
     
                //creation d'une fonction traiteur et liaison avec les objets précédemment créés
                traiteur1 t1 = new traiteur1();
                t1.addInput("objectInt32", intNormal);
                t1.addInput("objectMonInt32",objMonInt32);
     
                //traitement
                t1.action();
     
                //fin du traitement
                Console.WriteLine("intNormal : " + intNormal + ", objMonInt32 : " + objMonInt32.Value);
            }
        }
    Console.WriteLine("intNormal : " + intNormal + ", objMonInt32 : " + objMonInt32.Value); affiche 5 et 0, je voudrais 0 et 0.

    En faite, mes objets ATraiteur doivent travailler sur les mêmes inputs, ainsi si traiteur1 modifie l'objet objMonInt32 du programme principal alors traiteur2 (si il esixtait) devrait travailler sur la nouvelle valeur de objMonInt32.

    Quand on a des objets avec des champs, il n'y a pas de probleme mais dans traiteur 1 quand je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _inputs["objectInt32"] = 0;
    c'est comme si je faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _inputs["objectInt32"] = new Int32(0);
    En passant par un objet monInt32 il n'y a pas de problème puis que je change la valeur d'un champ, je ne crée pas un nouvel objet.

    Je voudrais pouvoir faire cela sans la classe monInt32, je pensais qu'il y avait une méthode pour changer la valeur d'un int genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int i;
    i.Value = 3;
    ou i.set(3);
    J'espère que je me suis mieux exprimé...

  9. #9
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par duaner
    J'espère que je me suis mieux exprimé...
    oui tu t'es mieux exprimé mais ce que tu ne comprend toujours pas c'est que quant tu fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int i = 0;
    int j = i;
    C'est bien la valeur de i qui est copié dans j et non pas la référence. Tu ne peux donc pas pas faire ce que tu veux sans passer par une encapsulation
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

Discussions similaires

  1. Réponses: 14
    Dernier message: 04/10/2012, 13h14
  2. [POO] Changer la source d'un objet (flash) en Javascript
    Par thomine dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/02/2008, 16h54
  3. changer la couleur d'un objet existant
    Par Mandalar dans le forum Tkinter
    Réponses: 4
    Dernier message: 02/03/2005, 21h09
  4. Changer la valeur sélectionnée d'un <select> en javasc
    Par Oluha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/02/2005, 15h53
  5. Changer la valeur de la MTU sur un LAN
    Par nin2 dans le forum Réseau
    Réponses: 3
    Dernier message: 19/02/2005, 15h47

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