C# の列挙型文字列

Muhammad Maisam Abbas 2023年1月30日 2021年3月24日
  1. C# で拡張関数を使用して文字列の列挙を作成する
  2. C# で定数変数を使用して文字列の列挙を作成する
  3. C# の ToString() 関数を使用して文字列の列挙を作成する
C# の列挙型文字列

このチュートリアルでは、C# で文字列の列挙を作成する方法を紹介します。

C# で拡張関数を使用して文字列の列挙を作成する

列挙型は、変数が格納できる事前定義された定数値のセットです。enum クラスは、C# で列挙を宣言するために使用されます。デフォルトでは、enum クラス内の変数のタイプは int です。文字列値を使用して列挙型を宣言する組み込みのメソッドはありません。文字列定数を使用して列挙型を宣言する場合は、enum クラスと拡張関数を使って実現することができます。次のコード例は、C# で enum クラスと拡張関数を使用して文字列値の列挙を作成する方法を示しています。

using System;

namespace enum_with_string
{
    public enum ErrorLevel
    {
        None,
        Low,
        Medium,
        High
    }

    public static class ErrorLevelExtensions
    {
        public static string GetString(this ErrorLevel me)
        {
            switch (me)
            {
                case ErrorLevel.None:
                    return "NO ERRORS";
                case ErrorLevel.Low:
                    return "LOW LEVEL ERROR";
                case ErrorLevel.Medium:
                    return "MEDIUM LEVEL ERROR";
                case ErrorLevel.High:
                    return "HIGH LEVEL ERROR";
                default:
                    return "NO VALUE GIVEN";
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            ErrorLevel e = ErrorLevel.None;
            string output = e.GetString();
            Console.WriteLine(output);
        }
    }
}

出力:

NO ERRORS

列挙型 ErrorLevel を定数値 None, Low, Medium, Highenum キーワードで宣言しました。次に、switch() ステートメントを使用して列挙の値を決定し、その値に従って文字列を返す拡張関数 GetString() を作成しました。GetString() 関数の結果は、出力文字列に保存されます。

C# で定数変数を使用して文字列の列挙を作成する

C# のクラス内でいくつかの定数変数を初期化することにより、列挙型の機能を実現することもできます。const キーワードは、変数が定数になり、その値を変更できないことを指定します。次のコード例は、C# で定数変数を使用して文字列の列挙を作成する方法を示しています。

using System;

namespace enum_with_string
{
    public static class Error
    {
        public const string None = "No Errors";
        public const string Low = "Low Level Errors";
        public const string Medium = "Medium Level Errors";
        public const string High = "High Level Errors";
    }
    class Program
    {
        static void Main(string[] args)
        {
            String output = Error.Low;
            Console.WriteLine(output);
        }
    }
}

出力:

Low Level Errors

Error という名前の public static class を宣言し、クラス内のすべての public const string 変数を初期化しました。クラスを static に保つ理由は、main() 関数内に Error クラスのインスタンスを作成したくないためです。Error.Low の値を文字列変数 output 内に格納しました。このアプローチは、はるかに単純で理解しやすいものです。class キーワードの代わりに struct キーワードを使用した構造体でも同じことができます。

C# の ToString() 関数を使用して文字列の列挙を作成する

これは、列挙内の値の名前を C# の文字列に変換する即興の方法です。ToString() 関数を列挙型のインスタンスとともに使用して、文字列への列挙内の値の名前。次のコード例は、C# で ToString() 関数を使用して文字列の列挙を作成する方法を示しています。

using System;

namespace enum_with_string
{
    public enum ErrorLevel
    {
        None,
        Low,
        Medium,
        High
    }
    class Program
    {
        static void Main(string[] args)
        {
            ErrorLevel e = ErrorLevel.None;
            string output = e.ToString();
            Console.WriteLine(output);
        }
    }
}

出力:

None

列挙型 ErrorLevel 内の名前 None を、C# の ToString() 関数を使用して文字列に変換しました。この方法は使いやすいですが、いくつかの欠点があります。このアプローチでは、前の例のように低レベルエラーという値を取得することはできません。このアプローチでは、C# の命名規則に従う必要があります。この方法は、1 語の文字列のみの列挙を作成する場合にのみお勧めします。それ以外の場合は、上記の 2つの方法のいずれかを使用する必要があります。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Csharp String

関連記事 - Csharp Enum