C#

【C#】enum (列挙型)がわかる!かんたん徹底解説

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。

今回はC#で列挙型(enum)についてお話します。

C#の「enum」とは?(列挙型)

「enum」とは列挙型を使用するために使われます。
列挙型を簡単に説明すると「名前の付いた定数の集まり」です。列挙型で定義される定数を「列挙子リスト」と呼ぶこともあります。

デフォルトの何もしていない状態では、0(ゼロ)から順番に整数の値が付けられます。

enumに使える整数値の型

もちろん値を自分で指定することもできます。
その際に使える整数値の型には「byte、sbyte、short、ushort、int、uint、long、ulong」が使用可能です。最初の値を0(ゼロ)以外で定義することもできるので結構便利だったりします。

「enum」の基本構文

基本の構文は下記のとおりです。


enum オブジェクト名
{
列挙子1,
列挙子2,
列挙子3
};

この列挙子には、日本語を指定することもできるので頭の片隅で覚えておくと便利かもしれません。
※ 列挙子には「空白(スペース)」を使うことはできません。

C#の「enum」の使い方

では実際に「enum」を使って見ましょう。

今回はすぐに使えるサンプルコードを紹介していきますので、まずはコピペでもいいので動かしてどうゆう動きをするのかを確認してみてください。


enum Days {
    Mon,
    Tue,
    Wed,
    Thu,
    Fri,
    Sat,
    Sun
}

列挙子(Mon,Tue,Wed,Thu,Fri,Sat,Sun)は型を指定していないのでデフォルトの型「int型」になっています。

データ型を指定してenumを定義する

では次に上記を別の型で指定する場合も見ていきましょう。
また、初期化子を使って以下のように定数の値を変更することもできます。


enum Days : byte{
    Mon = 1,
    Tue,
    Wed,
    Thu,
    Fri,
    Sat = 11,
    Sun
 }

このように「オブジェクト名 : データ型」とすることで、型を指定できます。
初期化子を変更した場合、変更した値から順番に定数の値が付けられます。上記のサンプルコードでは「Mon== 1, Tue==2, Wed==3, Thu==4, Fri==4, Sat==11, Sun==12」が入っています。

条件分岐「switch-case」での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 ("error!!");
                    break;
            }
            Console.ReadKey ();
        }
    }
}

実行結果:


平日

このように、かなり見やすくなりますね。

【おまけ】enumの値と名前をforeachで一覧取得する方法

「GetValues」というメソッドをつかってenumの値と名前を取得する方法をご紹介します。


using System;
namespace Sample {
    // enumの定義
    enum KyouProEnum {
        kyoukara = 0,
        watasiha = 1, purogurama = 2
    }
    class Sample {
        static void Main ()
        {
            foreach (KyouProEnum Value in Enum.GetValues (typeof (KyouProEnum)))
            {
                string name = Enum.GetName (typeof (KyouProEnum), Value);
                Console.WriteLine ("{0}:{1}", name, (int) Value);
            }
            Console.ReadKey ();
        }
    }
}

実行結果 :


kyoukara:0
watasiha:1
purogurama:2

このように「列挙子」と「値」がすべて取得できます。

まとめ

今回はC#における「enum」(列挙型)についてお話しました。
条件分岐などで活用するとコードがスッキリきれいに見え、かつコード管理しやすいものとなり大変便利なものです。

別に使わなくても書き方はあるのでいいや。ってなりがちですがせっかく便利なものがあるのでどんどん使って、一流のプログラマになりましょう!

よければ他にもC#の記事があるので見ていってくださいね。

C# 世界一わかるデリゲート(delegate)について

【初心者必見】現役エンジニアがおすすめするプログラミングスクール

[C#] ラムダ式はこれさえ見ればOK!簡単徹底解説

 

 

Kindle Unlimitedで無料で本が読める

 

Kindle Unlimitedを無料で試す

 

なら最初の30日間は無料でコーディング・デザイン・ブログ・英語・Youtubeの参考書・キャリア・副業・マーケティング・漫画・美容知識・雑誌などが読み放題です。

人気の本もあるので是非お試ししてみてください!30日以内に解約すればお金は全くかかりません。

 


最近の投稿

【今すぐ行動しよう】フリーランスエンジニアとブログの相性は抜群!

フリーランスエンジニアがスキルや経験から得たビジネスノウハウを共有する手段として「ブログ」は非常におすすめです。自身のスキルや知識のアウトプットや、実際に自分が経験したことを共有して同じような境遇の人の手助けになるような情報を公開することで自分に帰ってくるメリットは非常に多いです。今回はそのあたりについて紹介していきます。

【経験談】フリーランスのエンジニアは本当に大変なの?安定のコツやポイント

フリーランスのエンジニアは「大変だからやめとけ」という話をよく聞くので、そのことについて現役でフリーランスエンジニアとして生活している私が、その話の実態を解説しようと思います。フリーランスエンジニアの大変なところはもちろんありますが、それ以上にメリットが多いので私個人的には非常におすすめしています。

【幸福度UP】フリーランスエンジニアの「田舎暮らし」実現できます

フリーランスエンジニアとして田舎で暮らす人が増えてるって聞くけど、本当なのかな?どうやったら実現できるのか?今回はフリーランスエンジニアとして田舎で生活をしたいという方向けに、実現可能なのか、実現するにはどうすれば良いのかをご紹介します。

【単価交渉で収入アップ】フリーランスが単価交渉を成功させる4つのポイント

フリーランスが収入をアップさせるための重要な手段のひとつに「単価交渉」があります。今回は、現役でフリーランスとしてエンジニアをしている私が実践して効果のあった単価交渉の方法やコツをご紹介します。

【 今なら無料!】タスク管理ツール「Backlog」を無料で使う方法と手順

今回は、普段のタスク管理からプロジェクトの管理まで幅広く使えるツール「Backlog」を無料で使うための方法とその手段を画像つきで紹介しました。もし気に入らなければ、期間内に解約してしまえば費用はかかりません。また、以外と知られていない「フリープラン」も紹介しているので、是非参考にしてみてください。

Copyright© FUNA BLOG , 2021 All Rights Reserved.