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 :

Faire un simili int?.Parse() ?


Sujet :

C#

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 149
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut Faire un simili int?.Parse() ?
    Bonjour,

    J'ai une chaîne de caractère.
    Elle est forcément numérique, ou vide.


    Je souhaite donc créer un int? contenant la valeur numérique de la chaîne, ou null si la chaîne est vide.


    Malheureusement, la méthode int?.Parse() n'existe pas.

    Du coup je me retrouve avec deux bémols dans mon code (enfin… 3) :
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ticket.AssignedToId = (TxtAssignedToId.Text.Length > 0) ? (int?)int.Parse(TxtAssignedToId.Text) : null;
    1/ C'est illisible pour rien
    2/ Je dois faire un test de longueur sur la chaîne qui me semble inutile car devrait être géré par le Parse()3/ Je suis obligé de passer par un int que je dois convertir explicitement en int? à cause du null de mon else et je trouve ça laid

    Avez-vous une idée pour faire un truc plus propre ?

    Il n'y a pas non plus de int?.TryParse(), évidement.
    On ne jouit bien que de ce qu’on partage.

  2. #2
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour ,

    Avez-vous une idée pour faire un truc plus propre ?
    Oui j'ai une méthode dans ma classe de helpers qui fait cela , pas la peine de te l'expliquer ca se lit facilement :

    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
     /// <summary>
            /// Conversion d'une String en Int32
            /// La valeur de la String ne doit pas dépasser 2,147,483,647
            /// retourne null en cas d'erreur
            /// </summary>
            public static int? strToIntN(String s)
            {
                if (String.IsNullOrEmpty(s))
                    return null;
     
                int nb;
                if (int.TryParse(s, out nb))
                    return nb;
     
                return null;
            }
    Bon code.
    throw new NoSignatureException();

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 149
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Hmpf… Pourquoi chercher simple quand on peut faire compliqué

    En effet ta solution est tout à fait simple
    On ne jouit bien que de ce qu’on partage.

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

Discussions similaires

  1. int x = null (comment faire)
    Par v1nce dans le forum C#
    Réponses: 3
    Dernier message: 09/02/2007, 15h35
  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. Réponses: 19
    Dernier message: 30/05/2006, 18h43
  4. Réponses: 12
    Dernier message: 31/12/2005, 16h01
  5. 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

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