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 :

int x = null (comment faire)


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 30
    Points
    30
    Par défaut int x = null (comment faire)
    bonjour,

    je crée des objets à partir d'une BDD (enfin de ses champs) ce qui me donne des classes TABLE_TOTO avec des propriétés PRENOM, NOM ...

    si le champ est VARCHAR en BDD alors la propriété est de type string
    NUMBER alors la propriété est int (ou long)

    Le "problème" c'est que ces champs peuvent être "null" or cette valeur ne peut pas être représentées par un int, long ...

    Je voudrais éviter d'avoir une classe avec une propriété isNull et une Value, j'aurai préféré une espèce de "super"int qui gère la comparaison/affectation avec null

    j'ai donc tenté de créer une "surclasse" de int qui permettrait d' "affecter la valeur nulle", mais je n'arrive à rien de concluant (pas de possibilité de surcharger l'opérateur d'affecation...)

    est-ce que quelqu'un aurait une suggestion ?

    voici ce que j'ai fait:

    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
        class pseudo_int
        {
            public pseudo_int()
            {
            }
     
            int  VLNN_VALUE;
            bool VLBO_NULLE = true;
     
            static public bool operator ==(pseudo_int o1, object o2) 
            {
                if (o2 == null) return o1.VLBO_NULLE;
                return Object.Equals(o1.VLNN_VALUE, o2);
            }
            static public bool operator !=(pseudo_int o1, object o2)
            {
                return !Object.Equals(o1, o2);
            }
     
            public override bool Equals(object obj)
            {
                if ((obj == null) && VLBO_NULLE) return true; 
                if (obj == null || GetType() != obj.GetType())  
                {            return false;    }
                // TODO: write your implementation of Equals() here.    throw new System.NotImplementedException();    
                return VLNN_VALUE.Equals(obj);
            }
        }

  2. #2
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    T'es en .Net 1.0, 1.1 ou 2.0 ? Car en 2.0, tu peux avec les types Nullable<int>

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par guitoux1
    T'es en .Net 1.0, 1.1 ou 2.0 ? Car en 2.0, tu peux avec les types Nullable<int>
    2.0 je m'en vais donc cherche de la doc sur ces Nullable<int>

    Sauf si qq1 peut m'épargner cette peine en me pointant directement sur LA référence

  4. #4
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    C'est un racourcis pour nullable.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/09/2008, 18h10
  2. comment faire marcher int random(int num);
    Par Marc_3 dans le forum C++
    Réponses: 5
    Dernier message: 21/08/2006, 08h49
  3. Comment faire un count de colonnes null
    Par claralavraie dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/01/2006, 14h13
  4. comment faire un cast d'un CString en int ?
    Par 180degrés dans le forum MFC
    Réponses: 1
    Dernier message: 23/12/2005, 22h02
  5. Pointeur intelligent boost : return NULL ->comment faire?
    Par choinul dans le forum Bibliothèques
    Réponses: 7
    Dernier message: 21/12/2005, 16h24

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