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 :

GET - Renvoyer un int avec un double


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut GET - Renvoyer un int avec un double
    Bonjour,

    Alors voilà... mon seul objectif c'est de retravailler le get car je dois faire certains calcul sur des double que je fais au travers de certaines fonctions dans la classe. Cependant, lorsque j'utilise mon Object.Bonus, je veux toujours toujours que ce sois un integer arrondi vers le bas. Ca donne donc ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public double Bonus { 
    get { return Convert.ToInt32(Math.Floor(this.Bonus)); } 
    set { this.Bonus = value;  } 
    }
    $exception {Impossible d'évaluer l'expression, car le thread actuel se trouve dans un état de dépassement de capacité de la pile.} System.Exception {System.StackOverflowException}
    J'imagine que c'est dû au fait que je renvoi un int, et que lorsque j'arrive au set j'essaie de mettre un double dans un int... mais y aurait-il un moyen d'arriver au même résultat ou c'est un peu utopique?

    Ou j'ai pas bien compris l'erreur et c'est un truc tout con? :p

    Merci d'avance

    Amuny,

  2. #2
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Je pense que tu n'as pas tout saisi sur les propriétés (ou à la récursivité).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private double _bonus;
    public double Bonus 
    { 
        get { return Math.Floor(_bonus); } // ca ne sert à rien de convertir en int32 car le type de la propriété est double
        set { _bonus = value;  } 
    }

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Ca me semble logique... ça ne fait pas ce que j'aurai espéré mais c'est une partie de régler !

    En fait idéalement je voudrais vraiment que mon Object.Bonus me renvoit un int même si a l'intérieur de l'objet il est considéré comme double, et en fait avec la solution que tu viens de donnée on arrive pile a l'erreur que je croyais avoir au départ (de mettre un double dans un double dans un int lors du SET si on met Bonus comme étant un int... !)

    Mais je crois que je vais y aller pour convertir au besoin à la sortie... :p

  4. #4
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    En réalité les propriétés ca n'a pas d'existence réelle. (Je sens que je vais me faire hurler dessus par les puriste, mais bon, c'est pour lui expliquer).
    Les propriétés c'est pour une simplification de l'ecriture de ce qu'on appelle les accesseurs.
    Typiquement, tu as un attribut protected/private/internal, tu ne peux donc pas y toucher depuis l'extérieur de la classe, en conséquence tu créer une méthode get et une méthode set qui te permettent d'obtenir et définir cet attribut depuis l'extérieur. Rien de plus.
    D'ailleur, si tu fais mumuse avec le msil (et/ou la reflection) tu va te rendre compte qu'une propriété est composée d'une methode get et d'une methode set.
    En conséquence, si tu veux un GET qui te retourne un type qui n'est pas celui de l'attribut, plutot que de passer par des propriétés tu fais des méthodes
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private double _Bonus;
    public int getBonus()
    {
        return (int)Math.Floor(_Bonus);
    }
    public double setBonus(double value)
    {
        _Bonus = value;
        return _Bonus; // Superflue, des fois c'est pratique pour chainer les méthodes. Si tu l'omet change le type retourné en void.
    }

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    C'est sur que c'est un moyen relativement simple,
    mais comme je disais, en fait je cherchais vraiment un moyen pour que Object.Bonus me renvoit directement un INT sans passé par une fonction.

    et ainsi pouvoir justement utilisé la réflection pour aller récupéré le "Bonus" comme toute les autres propriétés de mon objet

    Donc du coup, l'idée de la fonction, oui mais non ^^

    Mais plus j'y pense plus je me dis... que l'idée est probablement un peu tordue

  6. #6
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Utiliser la reflection pour aller chercher la valeur typée double de _Bonus ?!
    Oula ouais c'est bien tordu. Et quel intérêt ?
    Parce que bon, a la limite je peux comprendre que tu veuille exposer un entier mais gérer un double. Mais la ...

Discussions similaires

  1. Insert dans des champs INT avec des doubles quotes
    Par bannik dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/04/2008, 17h44
  2. erreur ASM inline sur 'INT' avec delphi7
    Par the_magik_mushroom dans le forum Langage
    Réponses: 1
    Dernier message: 03/11/2005, 01h41
  3. Probleme avec les double Liste chainees
    Par BernardT dans le forum Langage
    Réponses: 1
    Dernier message: 12/07/2005, 17h22
  4. [Servlet/JSP] - Pb de int avec un Bean d'un Servlet a un JSP
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 15
    Dernier message: 09/07/2005, 00h41
  5. arrondi avec type double
    Par la drogue c'est mal dans le forum MFC
    Réponses: 6
    Dernier message: 08/04/2005, 17h51

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