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 :

override operator ++


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut override operator ++
    bonjour j'ai définis une classe YearMonth
    Je voudrais overrider l'operateur ++

    mais je ne parviens pas a trouver la syntaxe correcte
    Et je ne trouve pas d'exemple
    Pour exemple voici ma dernière tentative (mais j'ai déja essayé plein de truc)
    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
        public class C_YearMonth
        {
          public int Year {get;set;}
          public int Month {get;set;}
          public C_YearMonth(int _year,int _month)
          {
            this.Year = _year;
            this.Month = _month;
          }
     
          public override operator ++
          {
            this.Month++;
            if (this.Month > 12)
            {
               this.Year++;
               this.Month=1;
            }
          }
       }

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Beep !

    Apres n tentatives je viens de trouver

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
          public override C_YearMonth operator ++(C_YearMonth a)
          {
            a.Month++;
            if (a.Month > 12)
            {
              a.Year++;
              a.Month = 1;
            }
            return a;
          }

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Sauf que c'est static, pas override, là ça compile pas
    Les opérateurs sont toujours statiques

    Sinon, plutôt que de chercher à tatons la bonne syntaxe, tu peux consulter la doc
    http://msdn.microsoft.com/en-us/library/s53ehcz3.aspx

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Oui c'est vrai j'avais oublié le statique
    Merci TomLev

    N.B. : Ce qui m'a un peu interpellé c'est que l'override de == oblige aussi l'override de != or l'un est quand meme l'inverse de l'autre !

    Donc ca m'a semblé un peu idiot d'ecrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
          static public bool operator == (C_YearMonth a,C_YearMonth b)
          {
            return ((a.Year != b.Year) && (a.Month != b.Month));
          }
          static public bool operator !=(C_YearMonth a, C_YearMonth b)
          {
            return !(a == b);
          }

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est pour des raisons de cohérence : si tu changes la signification de ==, il faut aussi changer celle de !=. Conceptuellement, l'un est effectivement l'inverse de l'autre, mais ce sont quand-même deux opérateurs distincts, ils ne sont pas définis en fonction l'un de l'autre.

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

Discussions similaires

  1. [JSP] thread ? Message d'avancement des operations en cours
    Par buffyann dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 18/12/2003, 11h39
  2. operation sur des alias
    Par 74160 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/11/2003, 18h19
  3. Réponses: 8
    Dernier message: 21/11/2003, 18h38
  4. Avantages de OnSomething / override
    Par Bruno75 dans le forum Langage
    Réponses: 7
    Dernier message: 20/10/2003, 19h49
  5. Problème d'override...
    Par NeoMan dans le forum Langage
    Réponses: 6
    Dernier message: 10/03/2003, 14h21

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