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 :

IsNumeric en C#


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Par défaut IsNumeric en C#
    Bonjour,
    avant toute chose je tiens a signaler que j'utilise le Framework 2.0 et VS 2005.

    Ayant fait quelque recherche sur internet pour trouver un équivalent a la fonction IsNumeric qui n'existe pas en C#, plusieurs possibilités sont apparues.

    Cependant, je n'arrive pas a les mettre en œuvre.
    Voici les différentes solutions et les problème rencontrés

    - Utiliser la fonction VB
    Cette solution me parait la plus rapide a utiliser et solutionne tout a fait mon problème initiale. Or, même en incluant Microsoft.VisualBasic dans les références, l'intellisense ne me propose pas Information.IsNumeric()
    Aurais je oublier quelque chose?

    - Utiliser IsNumber
    J'ai ensuite tenté d'utiliser la fonction IsNumber lié au char. Cependant même problème, la fonction n'est pas reconnu

    Je m'adresse donc a vous afin de me donner des pistes pour la résolution de mon problème.

    Petite précision je ne sais pas si elle a son importance, mais le code se situe dans un user control

    Merci d'avance pour vos reponses

  2. #2
    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
    Citation Envoyé par Med86 Voir le message
    - Utiliser la fonction VB
    Cette solution me parait la plus rapide a utiliser et solutionne tout a fait mon problème initiale. Or, même en incluant Microsoft.VisualBasic dans les références, l'intellisense ne me propose pas Information.IsNumeric()
    Aurais je oublier quelque chose?
    La référence à l'assembly Microsoft.VisualBasic ne suffit pas, il faut aussi une directive using :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using Microsoft.VisualBasic;
    Citation Envoyé par Med86 Voir le message
    - Utiliser IsNumber
    J'ai ensuite tenté d'utiliser la fonction IsNumber lié au char. Cependant même problème, la fonction n'est pas reconnu
    Tu n'a pas du l'utiliser comme il faut alors... c'est une méthode statique, donc il faut écrire Char.IsNumber(...). Mais de toutes façons ça teste seulement si un caractère est un chiffre, pas si une chaine est un nombre.

    Citation Envoyé par Med86 Voir le message
    Petite précision je ne sais pas si elle a son importance, mais le code se situe dans un user control
    Aucune importance


    Sinon, une autre méthode est d'utiliser Int32.TryParse (ou Double.TryParse pour un nombre avec des décimales) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string uneChaine = "123";
    int x;
    if (Int32.TryParse(uneChaine, out x))
    {
        // c'est un nombre
    }

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Par défaut
    Déjà merci pour la réponse rapide

    Citation Envoyé par tomlev Voir le message
    La référence à l'assembly Microsoft.VisualBasic ne suffit pas, il faut aussi une directive using :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using Microsoft.VisualBasic;
    C'est effectivement ce que je voulais dire avec ajouté dans les références, désolé de mettre mal exprimé.
    Même avec ça, l'intellisense ne me propose que Microsoft.VisualBasic.VBCodeProvider


    Citation Envoyé par tomlev Voir le message
    Citation:
    Envoyé par Med86 Voir le message
    - Utiliser IsNumber
    J'ai ensuite tenté d'utiliser la fonction IsNumber lié au char. Cependant même problème, la fonction n'est pas reconnu
    Tu n'a pas du l'utiliser comme il faut alors... c'est une méthode statique, donc il faut écrire Char.IsNumber(...). Mais de toutes façons ça teste seulement si un caractère est un chiffre, pas si une chaine est un nombre.
    Je sais bien mais associé à une boucle et le tour est joué

    Pour le tryParse je m'y était mal pris je vais retester ça de suite
    EDIT : C'est ok pour le tryParse , mais j'aimerais bien quand même savoir pourquoi je n'est pas accès a Information

  4. #4
    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
    Citation Envoyé par Med86 Voir le message
    C'est effectivement ce que je voulais dire avec ajouté dans les références, désolé de mettre mal exprimé.
    Même avec ça, l'intellisense ne me propose que Microsoft.VisualBasic.VBCodeProvider
    OK, donc c'est le contraire : tu as ajouté le using, mais pas la référence d'assembly. La classe Information est dans l'assembly Microsoft.VisualBasic.dll, il faut donc l'ajouter dans les références de ton projet

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Par défaut
    Ok parfait merci beaucoup
    Et désolé de t'avoir dérangé pour si peu

  6. #6
    Membre chevronné
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Par défaut Autre solution
    Pourquoi ne pas utiliser des méthodes statiques de la struct Double, comme IsNaN() or TryParse() ?

    Elles sont hébergées dans le namespace System, cela évite d'avoir à charger une nouvelle assembly pour exécuter seulement une méthode.

  7. #7
    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
    Citation Envoyé par Gold Bug Voir le message
    Pourquoi ne pas utiliser des méthodes statiques de la struct Double, comme IsNaN() or TryParse() ?
    Encore un qui a pas lu la discussion avant de poster...

    Citation Envoyé par tomlev Voir le message
    Sinon, une autre méthode est d'utiliser Int32.TryParse (ou Double.TryParse pour un nombre avec des décimales) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string uneChaine = "123";
    int x;
    if (Int32.TryParse(uneChaine, out x))
    {
        // c'est un nombre
    }
    Et la méthode IsNaN n'a rien à voir, elle indique seulement si un nombre est égal à NaN (not a number) qui est le résultat d'une division par 0.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut
    Malgré le fait que la discussion soit résolu... est-ce que les regexp serait appropriées dans ce cas-ci???

    Merci

  9. #9
    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
    Citation Envoyé par FadeOut Voir le message
    Malgré le fait que la discussion soit résolu... est-ce que les regexp serait appropriées dans ce cas-ci???
    C'est aussi une solution, mais c'est (un peu) plus compliqué

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 23/10/2008, 13h58
  2. isnumeric
    Par philippe123 dans le forum ASP
    Réponses: 6
    Dernier message: 22/08/2005, 13h59
  3. Equivalent IsNumeric
    Par Off$ide dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 16/02/2005, 18h07
  4. [VB.NET]Fonction IsNumeric -bug- Windows Server 2003
    Par Seb.M dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/12/2004, 17h30
  5. [C#] Equivalent de IsNumeric
    Par yannick dans le forum C#
    Réponses: 12
    Dernier message: 20/05/2004, 14h26

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