C# 列挙型の制限は、基になる型が整数である必要があることです。これにより、理解しにくいコードを表す列挙型の作成が妨げられる可能性があります。この問題を解決するには、いくつかの代替案が考えられます。
1 つのテクニックは、クラスでプロパティを使用することです。このアプローチでは、文字列を値として使用する柔軟性を維持しながら、より enum に似た構文が提供されます。たとえば、Logger クラスはログ カテゴリを表すプロパティを定義できます。
<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>
もう 1 つのオプションは、タイプセーフな文字列値をパラメータとしてメソッドに渡すことです。このアプローチにより、特定の文字列値を受け入れる厳密に型指定されたメソッドを作成できます。 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>
使用方法:
<code class="language-csharp">Logger.Write("这几乎就像一个枚举。", LogCategory.Info);</code>
どちらの手法も、理解しにくいコードを表すための列挙型の代替手段を提供し、型の安全性と可読性の利点を提供します。
以上がC# で理解できないコードを、読み取り可能な Enum のような構造で表現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。