C# Programming

Conversion Efficace Caractère-Entier en C#

Spread the love

Convertir un caractère représentant un chiffre (0-9) en son équivalent entier est une tâche fréquente en C#. Cet article explore quatre méthodes efficaces, en soulignant leurs forces et leurs faiblesses pour vous aider à choisir la meilleure approche pour votre scénario spécifique.

Table des matières

Soustraire ‘0’

Cette méthode exploite l’ordre séquentiel des caractères en ASCII et Unicode. Soustraire le caractère ‘0’ d’un caractère chiffre donne directement son équivalent entier. Elle est concise et très efficace, mais limitée aux chiffres ASCII (‘0’ à ‘9’).


using System;

public class CharToIntConversion
{
    public static void Main(string[] args)
    {
        char digitChar = '3';

        if (char.IsDigit(digitChar))
        {
            int intValue = digitChar - '0';
            Console.WriteLine($"La valeur entière de '{digitChar}' est : {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' n'est pas un chiffre.");
        }
    }
}

Utiliser char.GetNumericValue()

La méthode char.GetNumericValue() offre une conversion robuste, gérant les chiffres de différentes plages Unicode. Cependant, elle renvoie un double, nécessitant un cast en int, et renvoie -1 pour les caractères non numériques.


using System;

public class CharToIntConversion
{
    public static void Main(string[] args)
    {
        char digitChar = '7';

        double numericValue = char.GetNumericValue(digitChar);

        if (numericValue != -1)
        {
            int intValue = (int)numericValue;
            Console.WriteLine($"La valeur entière de '{digitChar}' est : {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' n'est pas un caractère numérique.");
        }
    }
}

Utiliser char.GetDecimalDigitValue()

Similaire à GetNumericValue(), mais spécifiquement pour les chiffres décimaux (0-9). Elle renvoie directement un int et -1 si l’entrée n’est pas un chiffre décimal, ce qui la rend efficace et simple.


using System;

public class CharToIntConversion
{
    public static void Main(string[] args)
    {
        char digitChar = '9';
        int intValue = char.GetDecimalDigitValue(digitChar);

        if (intValue != -1)
        {
            Console.WriteLine($"La valeur entière de '{digitChar}' est : {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' n'est pas un chiffre décimal.");
        }
    }
}

Utiliser int.Parse()

int.Parse() convertit une représentation chaîne de caractères en un entier. Bien que apparemment moins efficace pour les caractères uniques, elle est avantageuse lors de la manipulation de chaînes de caractères ou lorsqu’une gestion robuste des erreurs est nécessaire. Elle lève une exception FormatException si l’entrée n’est pas un entier valide.


using System;

public class CharToIntConversion
{
    public static void Main(string[] args)
    {
        char digitChar = '5';

        try
        {
            int intValue = int.Parse(digitChar.ToString());
            Console.WriteLine($"La valeur entière de '{digitChar}' est : {intValue}");
        }
        catch (FormatException)
        {
            Console.WriteLine($"'{digitChar}' n'est pas un entier valide.");
        }
    }
}

La méthode optimale dépend de votre contexte. Pour les chiffres ASCII simples, soustraire ‘0’ est le plus rapide. Pour une prise en charge plus large de Unicode et une gestion des erreurs, GetNumericValue() ou GetDecimalDigitValue() sont préférables. int.Parse() offre la gestion des erreurs la plus robuste mais est la moins efficace pour les caractères uniques. Gérez toujours les erreurs potentielles de manière appropriée.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *