Maison > développement back-end > C++ > Comment puis-je tester de manière générique si une chaîne peut être analysée selon un type spécifique ?

Comment puis-je tester de manière générique si une chaîne peut être analysée selon un type spécifique ?

Susan Sarandon
Libérer: 2024-12-30 19:05:16
original
347 Les gens l'ont consulté

How Can I Generically Test if a String Can Be Parsed to a Specific Type?

Test générique de chaînes avec TryParse

Dans une tentative de création d'une méthode d'extension générique pour vérifier les valeurs de chaîne, vous avez rencontré un problème avec « TryParse » n'étant défini dans aucun interface et recherché une solution alternative.

Approche alternative utilisant TypeDescriptor

La classe TypeDescriptor fournit un moyen de récupérer un convertisseur de type pour un type de données donné. Ce convertisseur peut être utilisé pour convertir des chaînes vers et depuis d’autres types. Voici une version mise à jour de votre code :

public static bool Is(this string input, Type targetType)
{
    try
    {
        TypeDescriptor.GetConverter(targetType).ConvertFromString(input);
        return true;
    }
    catch
    {
        return false;
    }
}
Copier après la connexion

Dans cette version, vous pouvez transmettre n'importe quel type cible et il tentera de convertir la chaîne en ce type à l'aide du convertisseur approprié. Si la conversion réussit, la méthode renvoie true ; sinon, il renvoie false.

Exceptions et alternatives

Bien que l'approche basée sur les exceptions fonctionne, vous préférerez peut-être une option plus robuste. Au lieu d'utiliser des exceptions, vous pouvez renvoyer une valeur Nullable valeur, indiquant si la conversion a réussi.

Vous pouvez également créer des surcharges pour les types courants, tels que int, double et DateTime, et définir une logique personnalisée pour chaque type. Cela éliminerait le besoin d'une implémentation générique et fournirait des conversions plus efficaces et plus sûres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal