Maison > développement back-end > C++ > Comment puis-je représenter efficacement les chaînes en c # ENUMS?

Comment puis-je représenter efficacement les chaînes en c # ENUMS?

Linda Hamilton
Libérer: 2025-01-29 07:45:12
original
288 Les gens l'ont consulté

How Can I Efficiently Represent Strings in C# Enums?

C # La chaîne énumérée indique

En C #, l'énumération utilise généralement une valeur pour représenter différentes options. Cependant, dans certains cas, vous pouvez être plus enclin à s'associer à une chaîne significative à ces options.

Une méthode consiste à utiliser des attributs personnalisés et des méthodes de recherche de chaîne:

[StringValue("FORMS")]
public enum AuthenticationMethod
{
    FORMS = 1,
    WINDOWSAUTHENTICATION = 2,
    SINGLESIGNON = 3
}

public static class StringEnum
{
    public static string GetStringValue(Enum value)
    {
        // 检索 StringValue 属性,如果找到则返回关联的字符串;否则返回 null。
    }
}
Copier après la connexion
Cette méthode nécessite des attributs d'application manuels et est considéré comme relativement long.

Une autre méthode consiste à considérer le type de mode de levage sûr:

public sealed class AuthenticationMethod
{
    private readonly string name;
    private readonly int value;

    public static readonly AuthenticationMethod FORMS = new AuthenticationMethod(1, "FORMS");
    public static readonly AuthenticationMethod WINDOWSAUTHENTICATION = new AuthenticationMethod(2, "WINDOWS");
    public static readonly AuthenticationMethod SINGLESIGNON = new AuthenticationMethod(3, "SSN");

    private AuthenticationMethod(int value, string name)
    {
        this.name = name;
        this.value = value;
    }

    public override string ToString()
    {
        return name;
    }
}
Copier après la connexion
Ce modèle implique la création d'un joint similaire à l'ascenseur, où le champ de lecture statique représente chaque option. Chaque champ a une forme et une valeur de représentation de chaîne.

Pour la conversion du type de type explicite, envisagez d'ajouter l'opérateur de conversion de type défini par le dictionnaire de mappage et la définition de l'utilisateur:

private static readonly Dictionary<string, AuthenticationMethod> instance = new Dictionary<string, AuthenticationMethod>();

public AuthenticationMethod(int value, string name)
{
    instance[name] = this;
}

public static explicit operator AuthenticationMethod(string str)
{
    if (instance.TryGetValue(str, out AuthenticationMethod result))
        return result;
    else
        throw new InvalidCastException();
}
Copier après la connexion
Cette méthode combine les avantages des deux méthodes: le type de représentation de chaîne sûre et pratique et la conversion de type de la définition de l'utilisateur.

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!

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