C#文法 – enum

C#入門

 
 
■C#のenum
 
C#のenumは、定数(constant)を表すものでプログラムの可読性を高くします。
enumの各要素は、特に指定をしていなくても一番目の要素が 0、二番目の要素が 1、三番目の要素が 2などを割当されます。もちろん、任意の数字を設定することも可能です。
enumは、名前空間内で宣言ができます。クラスやメソッド内では宣言できません。

public enum Favorite
{
 Fish,
 Dog,
 Cat
}

上記の例は、Favoriteというenumを定義したものです。Fishは0、Dogは1、Catは2を持ちます。
 
 
■C#のenumの使用方法
enumは、数字型のオブジェクトと交換性を持ちます。例え、enumタイプの変数をintにキャストすると該当enumの値を取得できます。

class Program
{
 enum Favorite
 {
  Fish, // 0
  Dog, // 1
  Cat = 5, // 5
  Pig = 10 // 10
 }

 static void Main(string[] args)
 {
  Favorite myFavorite;
  
  // enumに値を代入
  myFavorite = Favorite.Fish;

  // enumをintにキャスト
  int favValue = (int) myFavorite;

  if (myFavorite == Favorite.Fish) // enumと比較
  {
   Console.WriteLine(“I Love Fish!”);
  }
 }
}

 
 
■flag enum
enumは、ビットで区別できる値(例:1, 2, 4, 8…)を持つように定義できます。
enumの宣言文の直前に [Flags] というAttributeを指定することで可能になります。
 
[Flags]属性をもつenumは、OR演算子AND演算子を利用してenumが特定の値を含めているか確認することができます。

[Flags]
enum Favorite
{
 Fish = 0,
 Dog = 1,
 Cat = 2,
 Pig = 4,
 Lion = 8
}

static void Main(string[] args)
{
 // OR演算子で多重Flagを割当
 Favorite fv = Favorite.Dog | Favorite.Pig;

 // AND演算子で値チェック
 if ((fv & Favorite.Dog) != 0)
 {
  //HasFlag()で値チェック
  if (fv.HasFlag(Favorite.Pig))
  {
   // Dog, Pig出力
   Console.WriteLine(fv.ToString());
  }
 }
}

 
 
 
 

当サイトは広告を含めています。広告のクリックによる収益は全て当サイトの管理、維持、コンテンツ製作に使われます。

 

Team ladybird
タイトルとURLをコピーしました