Eine Einschränkung von C#-Aufzählungen besteht darin, dass ihr zugrunde liegender Typ eine Ganzzahl sein muss, was die Erstellung von Aufzählungen behindern kann, die schwer verständlichen Code darstellen. Um dieses Problem zu lösen, können mehrere Alternativen in Betracht gezogen werden.
Eine Technik besteht darin, Eigenschaften in Klassen zu verwenden. Dieser Ansatz bietet eine eher enum-ähnliche Syntax und behält gleichzeitig die Flexibilität der Verwendung von Zeichenfolgen als Werte bei. Beispielsweise kann eine Logger-Klasse Eigenschaften definieren, um Protokollierungskategorien darzustellen:
<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>
Eine weitere Möglichkeit besteht darin, einen typsicheren String-Wert als Parameter an die Methode zu übergeben. Dieser Ansatz ermöglicht die Erstellung stark typisierter Methoden, die bestimmte Zeichenfolgenwerte akzeptieren. Ein Beispiel für eine solche Methode in der Logger-Klasse:
<code class="language-csharp">public static void Write(string message, LogCategory logCategory) { var log = new LogEntry { Message = message }; Logger.Write(log, logCategory.Value); }</code>
Anwendung:
<code class="language-csharp">Logger.Write("这几乎就像一个枚举。", LogCategory.Info);</code>
Beide Techniken bieten eine Alternative zu Aufzählungen zur Darstellung von schwer verständlichem Code und bieten die Vorteile der Typsicherheit und Lesbarkeit.
Das obige ist der detaillierte Inhalt vonWie kann ich unverständliche Codes in C# mit lesbaren Enum-ähnlichen Strukturen darstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!