Maison > développement back-end > C++ > Comment analyser en toute sécurité les chaînes d'énumération avec une valeur par défaut en C #?

Comment analyser en toute sécurité les chaînes d'énumération avec une valeur par défaut en C #?

Mary-Kate Olsen
Libérer: 2025-02-01 06:01:09
original
913 Les gens l'ont consulté

How to Safely Parse Enum Strings with a Default Value in C#?

Méthode de formation et contraintes de type d'énumération

Description du problème:

L'objectif est de créer une fonction générique, d'étendre la fonction

et permet la valeur par défaut lorsque vous ne pouvez pas trouver la valeur de correspondance de la correspondance. Cette fonction ne doit pas être distinguée par le cas.

Enum.Parse Cependant, lorsque vous essayez d'utiliser la fonction de définition de code suivante:

Je rencontrerai une erreur, soulignant que la contrainte ne peut pas être une classe spéciale (System.Enum).
<code class="language-csharp">public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum
{
    // 实现...
}</code>
Copier après la connexion

Solution:

Afin de résoudre cette erreur et de permettre l'utilisation d'énumérations génériques, la contrainte peut être modifiée:

La contrainte après cette mise à jour garantit que T est une structure et prend également en charge l'interface iconvertible, qui est implémentée par énumération.

<code class="language-csharp">public static T GetEnumFromString<T>(string value, T defaultValue) where T : struct, IConvertible</code>
Copier après la connexion
Implémentation améliorée:

Le code modifié suivant démontre l'amélioration de l'amélioration:

Cette méthode accepte désormais les types d'énumération génériques et est complètement sûr, garantissant que seules les valeurs d'énumération efficaces sont renvoyées. L'utilisation de

garantit l'exactitude de la culture croisée.

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