Une limitation des énumérations C# est que leur type sous-jacent doit être un entier, ce qui peut gêner la création d'énumérations représentant du code difficile à comprendre. Pour résoudre ce problème, plusieurs alternatives peuvent être envisagées.
Une technique consiste à utiliser des propriétés dans les classes. Cette approche fournit une syntaxe plus proche de celle d'une énumération tout en conservant la flexibilité d'utiliser des chaînes comme valeurs. Par exemple, une classe Logger peut définir des propriétés pour représenter les catégories de journalisation :
<code class="language-csharp">public class LogCategory { private LogCategory(string value) { Value = value; } public string Value { get; private set; } public static LogCategory Trace { get { return new LogCategory("Trace"); } } public static LogCategory Debug { get { return new LogCategory("Debug"); } } public static LogCategory Info { get { return new LogCategory("Info"); } } public static LogCategory Warning { get { return new LogCategory("Warning"); } } public static LogCategory Error { get { return new LogCategory("Error"); } } public override string ToString() { return Value; } }</code>
Une autre option consiste à transmettre une valeur de chaîne de type sécurisé en tant que paramètre à la méthode. Cette approche permet la création de méthodes fortement typées qui acceptent des valeurs de chaîne spécifiques. Un exemple d'une telle méthode dans la classe Logger :
<code class="language-csharp">public static void Write(string message, LogCategory logCategory) { var log = new LogEntry { Message = message }; Logger.Write(log, logCategory.Value); }</code>
Comment utiliser :
<code class="language-csharp">Logger.Write("这几乎就像一个枚举。", LogCategory.Info);</code>
Les deux techniques offrent une alternative aux énumérations pour représenter du code difficile à comprendre, offrant les avantages de la sécurité et de la lisibilité des types.
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!