ホームページ >バックエンド開発 >C++ >C#の列挙の文字列表現をよりエレガントにするにはどうすればよいですか?

C#の列挙の文字列表現をよりエレガントにするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-29 07:57:09231ブラウズ

How Can I Get the String Representation of an Enum in C# More Elegantly?

c#列挙の文字列をエレガントに入手してください

次の列挙を検討してください:

文字列値(ID 1ではなく「フォーム」など)を取得するには、解決策が必要です。既存の属性ベースのメソッドと辞書メソッドは変換ソリューションを提供しますが、よりエレガントなソリューションがあります。
<code class="language-csharp">public enum AuthenticationMethod
{
    FORMS = 1,
    WINDOWSAUTHENTICATION = 2,
    SINGLESIGNON = 3
}</code>

タイプセーフ列挙モード

タイプセーフ列挙モードはシーリングクラスを導入し、各列挙メンバーは別の例として表現されます:

このモデルには、次の利点があります

<code class="language-csharp">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;
    }
}</code>
タイプ安全性:

クラス効果的な値のみが使用されることを確認してください。
  • クリアで簡潔:文字列は各メンバーに直接示されます。 AuthenticationMethod スケーラビリティ:
  • 既存のコードを破壊することなく、付加価値を追加できます。
  • 異なるタイプ変換
  • 必要に応じて、明示的なタイプの変換をクラスに追加し、文字列が文字列を列挙に変換できるようにすることができます(コード例のこの部分に問題があります。訂正する必要があります):
これにより、簡単に変換できるようになります

以上がC#の列挙の文字列表現をよりエレガントにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。