列挙型の定義と使用
明示的な値と暗黙的な値を持つ列挙型を作成します。
「列挙型の定義と使用」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
列挙型とは
enum は、関連する定数に名前を付けてまとめたものです。意味のないマジックナンバーを意味のある名前に置き換えることで、コードを読みやすくします。
using System;
enum Direction { North, East, South, West }
class Program {
static void Main() {
Direction d = Direction.East;
Console.WriteLine(d);
}
}列挙型の宣言
enum キーワードを使い、メンバーを列挙して宣言します。既定では最初のメンバーが0、次が1、その次が2というように値が割り当てられます。
using System;
enum Day { Mon, Tue, Wed }
class Program {
static void Main() {
Console.WriteLine((int)Day.Mon);
Console.WriteLine((int)Day.Wed);
}
}基になる値のカスタマイズ
数値を明示的に割り当てることもできます。値を指定しないメンバーには、直前の値から続く値が割り当てられます。
using System;
enum Status { Active = 1, Paused = 5, Stopped }
class Program {
static void Main() {
Console.WriteLine((int)Status.Stopped);
}
}基になる型の選択
列挙型は既定で int を使用しますが、領域を節約するために byte などの別の整数型を選ぶこともできます。
using System;
enum Level : byte { Low = 1, High = 200 }
class Program {
static void Main() {
Console.WriteLine((byte)Level.High);
}
}変数での列挙型の使用
列挙型は、ほかの型と同じように変数、パラメーター、フィールドの型として使用できます。
using System;
enum Color { Red, Green, Blue }
class Program {
static void Describe(Color c) {
Console.WriteLine("Color is " + c);
}
static void Main() {
Describe(Color.Green);
}
}switch での列挙型の使用
列挙型は switch と組み合わせると、明確で漏れのない分岐を記述できます。
using System;
enum Signal { Stop, Go, Caution }
class Program {
static void Main() {
Signal s = Signal.Go;
switch (s) {
case Signal.Stop: Console.WriteLine("Halt"); break;
case Signal.Go: Console.WriteLine("Move"); break;
default: Console.WriteLine("Slow"); break;
}
}
}列挙値の比較
列挙値は == で比較でき、大小比較演算子では基になる数値に基づいて比較されます。
using System;
enum Priority { Low, Medium, High }
class Program {
static void Main() {
Console.WriteLine(Priority.High > Priority.Low);
}
}列挙型の既定値
初期化されていない列挙型の値は、値が0のメンバーと等しくなります。0には None のような妥当な既定値を割り当てるのがよい方法です。
using System;
enum Mode { None, Fast, Slow }
class Program {
static void Main() {
Mode m = default;
Console.WriteLine(m);
}
}列挙型の名前を表示する
ToString を呼び出すか列挙型を表示すると、メンバー名が出力されます。生の数値よりもはるかに明確です。
using System;
enum Fruit { Apple, Banana, Cherry }
class Program {
static void Main() {
Console.WriteLine(Fruit.Banana.ToString());
}
}列挙型で読みやすさを向上させる
整数をそのまま渡す場合と比べて、列挙型は意図を示し、不正な値を防ぎます。
using System;
enum Size { Small, Medium, Large }
class Program {
static int PriceFor(Size s) {
return s == Size.Large ? 12 : 8;
}
static void Main() {
Console.WriteLine(PriceFor(Size.Large));
}
}列挙型を宣言する場所
列挙型は名前空間レベルにもクラス内にも配置できます。使用するコードの近くに置くようにしてください。
using System;
class Program {
enum Phase { Start, Run, End }
static void Main() {
Console.WriteLine(Phase.Run);
}
}クイックチェック
列挙型についての理解度を確認しましょう。
まとめ
enum は名前付き定数の集合を定義し、マジックナンバーよりもコードを読みやすくします。メンバーには既定で0、1、2…が割り当てられますが、値を明示的に指定したり、基になる整数型を変更したりできます。
列挙型は変数、switch、比較で効果的に使用できます。表示するとメンバー名になり、既定値は値が0のメンバーです。
よくある質問
「列挙型の定義と使用」レッスンは無料ですか?
はい。「列挙型の定義と使用」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「列挙型の定義と使用」で何を学びますか?
明示的な値と暗黙的な値を持つ列挙型を作成します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「列挙型の定義と使用」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。