.NET Core(C#): enumの使い方サンプル

はじめに

  • サンプルは.NET Core 3.1 + C# 8.0で動作確認しています。
  • 完全なソースコードはこちらで公開しています。
  • enumは基本的には数値型を保持しますが、文字列を保持したい場合はこちらでサンプルを公開しています。
  • 以降のサンプルでは次の列挙体を使用します。

列挙体の基本操作

  • 列挙体と列挙体で定義される各値の基底クラスはSystem.Enumになっています。
  • 列挙体値の基となる型(UnderlyingType)はintです。キャストすることにより、整数と列挙体間の変換が行えます。
  • 列挙体の値名一覧や値一覧の取得など、列挙体に関する各種操作はEnumクラスで行えます。
  • 列挙体の値一覧を取得するEnum.GetValues()の返却値はSystem.Array型になっています。配列として扱う場合はLINQ(OfType)で変換できます。

列挙体の静的変換

  • 列挙体に実在しない値を指定しても例外は発生せず、列挙体の値として保持されます。変換時に列挙体値にない値を許容するかどうかの注意が必要です。
  • 列挙体に存在する値かどうかはEnum.IsDefined()で判定できます。
  • 列挙体の既定値(基となる型)は0であるため、0に対応する列挙体値を用意することが推奨されています。列挙体のベストプラクティスをご覧ください。

列挙体の動的変換

  • 整数を任意の列挙体に変換する場合は、Enum.ToObject()を使用します。前述の通り、列挙体の値に対応する整数かどうかはEnum.IsDefined()で判定できます。
  • 列挙体の値名を列挙体値に変換する場合は、Enum.Parse()またはEnum.TryParse()を使用します。