English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# 枚举(Enum)

C#において、enum(列挙型)は、一連の数値整数に定数名を割り当てるために使用されます。これにより、定数の値がより読みやすくなります。例えば、WeekDays.Mondayは、週の特定の日を参照する際に、数字0よりも読みやすくなります。

列挙型はenumキーワードを使って名前空間、クラス、構造体の中で直接定義されます。すべての常量名は大括弧内で宣言され、カンマで区切られています。以下は工作日列挙型の定義です。

enum WeekDays
{
    月曜日、
    火曜日、
    水曜日、
    木曜日,
    金曜日,
    土曜日,
    日曜日
}

上記では、WeekDays列挙型が各行でメンバーが宣言され、各行はカンマで区切られています。

列挙型値

列挙型メンバーに値が割り当てられていない場合、コンパイラはデフォルトで各メンバーに整数値(0から始まる)を割り当てます。列挙型の最初のメンバーは0で、続く各列挙型メンバーの値は増分で設定されます。1。

enum WeekDays
{
    月曜日、     // 0
    火曜日、    // 1
    水曜日、  // 2
    木曜日,   // 3
    金曜日,     // 4
    土曜日,   // 5
    日曜日      // 6
}

列挙型メンバーに異なる値を割り当てることができます。列挙型メンバーのデフォルト値の変更により、自動的に他のメンバーに増分値が割り当てられます。

enum Categories
{
    Electronics,    // 0
    Food,           // 1
    Automotive = 6, // 6
    Arts,           // 7
    BeautyCare,     // 8
    Fashion         // 9
}

各メンバーに異なる値を割り当てることができます。

enum Categories
{
    Electronics = 1,  
    Food = 5, 
    Automotive = 6, 
    Arts = 10, 
    BeautyCare = 11, 
    Fashion = 15,
    WomanFashion = 15
}

列挙型はどんな数字データ型でもできます、例えばbyte、sbyte、short、ushort、int、uint、long、ulongなどです。ただし、列挙型は文字列型ではありません。

enum名の後に:typeを指定して型を指定します。以下はバイト列挙型の定義です。

enum Categories: byte
{
    Electronics = 1,  
    Food = 5, 
    Automotive = 6, 
    Arts = 10, 
    BeautyCare = 11, 
    Fashion = 15
}

列挙型のアクセス

点記法を使ってアクセスできます: enum.member

enum WeekDays
{
    月曜日、 
    火曜日、
    水曜日、
    木曜日, 
    金曜日, 
    土曜日,
    日曜日 
}
Console.WriteLine(WeekDays.Monday); // 月曜日
Console.WriteLine(WeekDays.Tuesday); // 火曜日
Console.WriteLine(WeekDays.Wednesday); // 水曜日
Console.WriteLine(WeekDays.Thursday); // 木曜日
Console.WriteLine(WeekDays.Friday); // 金曜日
Console.WriteLine(WeekDays.Saturday); // 土曜日
Console.WriteLine(WeekDays.Sunday); // 日曜日

列挙型変換

列挙型から基本の整数型に変換するには明示的な強制変換が必要です。

enum WeekDays
{
    月曜日、 
    火曜日、
    水曜日、
    木曜日, 
    金曜日, 
    土曜日,
    日曜日 
}
Console.WriteLine(WeekDays.Friday); //出力:金曜日 
int day = (int) WeekDays.Friday; // enumからintへの変換
Console.WriteLine(day); //出力:4 
var wd = (WeekDays) 5; // intからenumへの変換
Console.WriteLine(wd);//出力:土曜日

enumは抽象クラスです。