【C#入門】enum(列挙型)とint型を相互に変換する方法

こんにちは!エンジニアの中沢です。

C#には複数の定数をまとめて扱う場合に便利なenum(列挙型)があります。

enumはswitch-case文のcaseの値によく使用されます。

この記事では、

  • enumとは
  • enumの使い方
  • enumをintに変換する方法
  • intをenumに変換する方法
  • enumを文字列に変換する方法

などの基本的な内容から、応用的な使い方に関しても解説していきます。

今回はこれらの方法を覚えるために、enum(列挙型)のさまざまな使い方をわかりやすく解説します!

enumとは

enum列挙型を使用するために使います。列挙型とは名前の付いた定数の集まりです。

列挙型で定義される定数は列挙子リストと呼ばれます。デフォルトでは列挙子に、0(ゼロ)から順に整数値が付けられます。

付けられる整数値の型は、byte、sbyte、short、ushort、int、uint、long、ulongに限られています。

最初の値を0(ゼロ)以外で定義することも可能です。また、列挙子リストの途中から付ける整数値を変えることもできます。

enumの使い方

enumはswitch-case文と合わせてよく使われます。

caseの値にenumの列挙子を指定することで、条件分岐が読みやすくなります。

次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    // enumの定義
    enum Days
    {
        Mon,
        Tue,
        Wed,
        Thu,
        Fri,
        Sat,
        Sun
    }

    class Sample
    {
        static void Main()
        {
            Days day = Days.Wed;

            switch (day)
            {
                case Days.Mon:
                case Days.Tue:
                case Days.Wed:
                case Days.Thu:
                case Days.Fri:
                    Console.WriteLine("平日です");
                    break;
                case Days.Sat:
                case Days.Sun:
                    Console.WriteLine("休日です");
                    break;
                default:
                    Console.WriteLine("不正です");
                    break;
            }

            Console.ReadKey();
        }
    }
}

実行結果:

平日です

このプログラムでは、入力された曜日が平日か休日かどうかをenumとswitch-case文を使って判定しています。

enumとint型を相互に変換する方法

enumをint型に変換する方法

ここでは、enumをint型に変換する方法を解説します。

enumの列挙子から値を取得するには、キャストをする必要があります。

次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    // enumの定義
    enum SamuraiEnum
    {
        Samurai = 0,
        Engineer = 1,
        Juku = 2
    }

    class Sample
    {
        static void Main()
        {
            // そのまだまと列挙子の名前を取得する
            Console.WriteLine(SamuraiEnum.Samurai);

            // キャストすると値を取得できる
            Console.WriteLine((int)SamuraiEnum.Samurai);

            Console.ReadKey();
        }
    }
}

実行結果:

Samurai
0

このプログラムの結果から、キャストをしない場合には列挙子の名前が取得され、キャストをすると値が取得できることが確認できました。

int型をenumに変換する方法

ここでは、int型をenumに変換する方法を解説します。

int型をenumに変換するキャストの方法を次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    // enumの定義
    enum SamuraiEnum
    {
        Samurai = 0,
        Engineer = 1,
        Juku = 2
    }

    class Sample
    {
        static void Main()
        {
            int num = 123;
            SamuraiEnum sEnum = (SamuraiEnum)Enum.ToObject(typeof(SamuraiEnum), num);

            Console.WriteLine((int)sEnum);

            Console.ReadKey();
        }
    }
}

実行結果:

123

このようにして、int型をenumに変換することができました。

enumを文字列に変換する方法

enumを文字列に変換するには、ToStringメソッドを使います。

次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    // enumの定義
    enum SamuraiEnum
    {
        Samurai = 0,
        Engineer = 1,
        Juku = 2
    }

    class Sample
    {
        static void Main()
        {
            SamuraiEnum sEnum = SamuraiEnum.Samurai;

            Console.WriteLine(sEnum.ToString());

            Console.ReadKey();
        }
    }
}

実行結果:

Samurai

このようにToStringメソッドを使って文字列に変換することができました。

enumを文字列に変換する方法は次の記事で詳しく解説しているので、ぜひ確認してください。

【C#入門】enumの値を文字列に変換する方法(属性の定義も解説)
更新日 : 2019年4月16日

まとめ

いかがでしたか?

今回はenumとint型を相互に変換する方法を解説しました。

enumはswitch-case文と合わせて使うと便利なので、ぜひ活用してくださいね。

もし、enumとint型の変換を忘れてしまったらこの記事を確認してください!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

中沢 丈

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説