Meilleur moyen d’obtenir Char Enum

Existe-t-il un moyen plus propre d’obtenir la valeur char d’un énum en C #

public enum DivisionStatus { None = 'N', Active = 'A', Inactive = 'I', Waitlist = 'W' } ssortingng status = Enums.DivisionStatus.Active.ToSsortingng()[0].ToSsortingng(); // "A" 

Il suffit de jeter la valeur:

 char status = (char)Enums.DivisionStatus.Active; 

Notez que cela utilisera la valeur au lieu de l’identifiant. La valeur Enums.DivisionStatus.Active est le code de caractère de 'A' , car il s’agit de la valeur que vous avez définie.

L’utilisation directe de la valeur est plus rapide que la recherche de l’identificateur de la valeur.

Je construis un “pseudo-enum” qui résout le problème. Dans votre cas, cela pourrait ressembler à:

 public class DivisionStatus { public static readonly DivisionStatus None = new DivisionStatus('N'); public static readonly DivisionStatus Active = new DivisionStatus('A'); public static readonly DivisionStatus Inactive = new DivisionStatus('I'); public static readonly DivisionStatus Waitlist = new DivisionStatus('W'); internal char Value { get; private set; } public override ssortingng ToSsortingng() { return Value.ToSsortingng(); } protected DivisionStatus(char value) { this.Value = value; } } 

Vous pouvez l’utiliser comme une énumération qui renvoie la valeur char enum sur ToSsortingng () sans transtypage:

 Console.WriteLine(DivisionStatus.None); // returns 'N' 

Vous pouvez également utiliser une classe statique. Cependant, si vous utilisez toujours les valeurs sous forme de chaînes, vous pouvez tout aussi facilement transformer chaque propriété en chaîne. Un des avantages de cette méthode est que vous pouvez append des descriptions pour chaque élément qui apparaîtra dans InteliSense.

 public static class DivisionStatus { ///  /// Some information about None ///  public const char None = 'N'; ///  /// Some information about Active, blah blah ///  public const char Active = 'A'; ///  /// Some information about Inactive, blah blah ///  public const char Inactive = 'I'; ///  /// Some information about Waitlist, blah blah ///  public const char Waitlist = 'W'; } 

var status = (char)Enums.DivisionStatus.Active; devrait faire exactement ce que vous voulez. La façon dont vous le faisiez auparavant n’aurait pas fonctionné si le premier caractère du texte enum ne correspondait pas à la valeur de caractère sous-jacente.

Cela fonctionne également pour les enums qui ont un int comme type de support.

Le casting simple fonctionne, je l’ai essayé:

 using System; public enum DivisionStatus { None = 'N', Active = 'X', Inactive = 'I', Waitlist = 'W' } class Program { public static void Main() { var ds = DivisionStatus.Active; Console.WriteLine((char)ds); } } 

Je voudrais juste lancer la valeur enum sans appeler ToSsortingng:

 var status = (char)DivisionStatus.Active; 

Ou peut-être devriez-vous le faire

 var status = (char)(int)DivisionStatus.Active;