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 :

Conversion 0 en false


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Points : 111
    Points
    111
    Par défaut Conversion 0 en false
    Bonjour,

    je début en C# et je viens du C++ . J'ai lu dans la doc que je ne pouvait pas convertir un int en bool.

    Hors, j'ai une application en c++ qui me fournit dans un fichier txt des 1 ou des 0 qu'il faut que j'interprète comme des true et des false.

    La première solution que j'ai trouvé c'est de convertir mon string en int puis en bool avec cette syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string machaine = "1";
    bool toto = Convert.ToBoolean(Convert.ToInt32(machaine));
    Y a t'il une méthode (ou fonction) de conversion plus simple au niveau syntaxe?

    Comment puis-je surchargé la méthode ToBoolean car je vais l'utiliser souvent et donc l'idée est de simplifier l'écriture ?

    NB: je ne souhaite pas utiliser directement dans le code un test du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool toto = machaine=="0"?false:true;
    d'avance merci de votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Tu peux tout simplement faire une petite méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    bool IntToBoolean(int value)
    {
      return value != 0;
    }
    Ou sans faire de méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool monBool = monInt != 0;
    En fait c'est que dit la doc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    On ne peut pas faire 
    if(monInt)
     
    Il faut faire 
     
    If(monInt != 0)

  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 317
    Points
    13 317
    Par défaut
    Tu peux tout simplement créer une méthode d'extension à int.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    public static class IntExtensions
    {
    public static bool ToBool(this int i)
    {
    return i != 0;
    }
    }
    Et ensuite, il suffit de préciser le ns contenant la classe IntExtensions pour pouvoir appeler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int a = 1;
    bool b = a.ToBool();
    n'importe où.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Points : 111
    Points
    111
    Par défaut
    Tout d'abord merci de ta réponse.

    Le hic par rapport à ce que tu me dis c'est que je prends un string en entrée. Donc ta fonction serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    bool StringToBoolean(string value)
    {
      return value != "0";
    }

    Est-il possible de surchargé la méthode ToBoolean de la classe Convert ?

  5. #5
    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 317
    Points
    13 317
    Par défaut
    Citation Envoyé par antrax2013 Voir le message
    Tout d'abord merci de ta réponse.

    Le hic par rapport à ce que tu me dis c'est que je prends un string en entrée. Donc ta fonction serait:
    Même principe : tu crées une méthode d'extension à String.

    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
     
    public static class StringExtension
    {
    public static bool ToBool(this string s)
    {
    int iVal;
    bool parseOk = int.TryParse(s, out iVal);
    if (parseOk)
    {
    return iVal != 0;
    }
    else
    {
    // ce que tu veux.
    throw new InvalidCastException("La chaine ne contient pas un boolean");
    }
    }
    }
    Est-il possible de surchargé la méthode ToBoolean de la classe Convert ?
    Non, tu ne peux surcharger une méthode que dans sa classe ou dans une classe héritée. Or Convert est une classe statique donc "sealed" par essence.

    Mais, je répète, les méthodes d'extension répondent compétement à ton besoin.

  6. #6
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Tu peux tout simplement créer une méthode d'extension à int.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    public static class IntExtensions
    {
    public static bool ToBool(this int i)
    {
    return i != 0;
    }
    }
    Et ensuite, il suffit de préciser le ns contenant la classe IntExtensions pour pouvoir appeler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int a = 1;
    bool b = a.ToBool();
    n'importe où.
    Ca pour le coup j'aime carrément. Merci

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

Discussions similaires

  1. Conversion Assembleur Motorola 68xxx en Intel 80xxx
    Par markham dans le forum Autres architectures
    Réponses: 3
    Dernier message: 22/11/2002, 20h09
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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