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 :

[C#] Est-il possible de surcharger l'opérateur = ?


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 43
    Points : 37
    Points
    37
    Par défaut [C#] Est-il possible de surcharger l'opérateur = ?
    Bonjour,

    Voilà ma question est simple

    Merci,
    Greg

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    tu ne parlerai pas plutôt de l'opérateur '==' :
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    hum non non de =

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    Ok alors changeons de question.

    Est-il possible de définir un type Date qui agit comme une string et que je puisse utiliser dans toutes mes classes sans avoir à instancier une classe contenant la propriété Date et sans avoir à hériter.

    edit : je connais DateTime mais je voudrais faire mon propre type utilisateur

    Greg

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Une Classe MyDate proposant que des méthodes static devrait pouvoir faire l'affaire non :
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    Ca pourrait mais ce n'est pas vraiment un type.

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    tu veux pas hériter, ni instancier, peux-tu carrement me décrire le modèle idéal de ce que tu veux car là je ne te comprends plus
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    bah par exemple faire comme :

    int x;
    double y;

    mais avec mon type :

    greg x;

    et donc apres j'agis dessus par :

    greg = truc;

    un type customisé

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 105
    Points : 134
    Points
    134
    Par défaut
    C'est pas très clair ton problème.

    Il est impossible d'affecter un type avec une quelconque donnée comme tu sembles vouloir le faire avec ton exemple :

    avec greg un type Tu ne peux pas non plus le faire avec un type de base tel que double ou int comme tu sembles le penser.

    Essaie de reformuler tes besoins

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Je trouve ses besoins assez clair, meme si c'est mal exprimé . Il veut surcharger l'opérateur = c'est tout, comme on peut le faire en C++ de maniere à affecter à un type un autre type qui n'a rien a voir (pas de lien de parenté).

    La réponse est non, tu ne peux pas surcherger l'opérateur = en .Net (si l'on en croit ceci : http://www.csharphelp.com/archives/archive135.html . Cela dit ça se comprend vu qu'en .Net la plupart de tes objets sont des types références et pas valeur. Par contre tu peux toujours définir un constructeur de conversion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Greg
    {
        public Greg(string str)
        {
            //conversion de chaine vers Greg
        }
    }
    Et pour l'utiliser il faut bien sur instancier ta classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string Chaine = "xxxxx";
    Greg x = new Greg(Chaine);
    Je pense que c'est le mieux que tu puisse obtenir, avec bien sur l'autre méthode proposée qui est d'avoir une méthode static de type Convert dans ta classe Greg :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Greg
    {
        public static Greg Convert(string str)
        {
            //ici tu renvoies un nouveau Greg
        }
    }

  11. #11
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Points : 100
    Points
    100
    Par défaut
    Est-ce que par hasard, ce que tu chercherais à faire ne serait pas une conversion implicite ?

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    Merci Sphax je pense aussi que ce n'est vraiment pas possible, mais bon je tentais le coup auprès des experts

    Merci pour les conversion implicites Wyatan, hop bookmark ça me servira surement sous peu.

    Merci pour vos réponses,
    Greg

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/04/2008, 19h15
  2. est ce possible de surcharger les operateurs
    Par dietrich dans le forum Delphi
    Réponses: 5
    Dernier message: 26/08/2006, 11h15
  3. Réponses: 3
    Dernier message: 29/07/2003, 09h38
  4. Réponses: 2
    Dernier message: 16/05/2003, 10h14
  5. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22

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