列挙型
| 書き方 | 説明 | 注意 |
|---|---|---|
public enum Mode { Off, On } | 列挙型の宣言 | |
enum Code { Ok = 200, NotFound = 404 } | 値の明示 | |
enum Small : byte { A = 1 } | 基になる型の指定 | |
[System.Flags] enum Perm { Read = 1, Write = 2 } | 組み合わせ(Flags) | |
public Mode M; | フィールドとして保持 | |
Mode[] ms = new Mode[2]; | 配列の要素 | |
struct Holder { enum Mode { … } } | 型の中の宣言 |
非対応(4)
Section titled “非対応(4)”| 書き方 | 説明 | エラー | 理由 | 代替 |
|---|---|---|---|---|
m.ToString() | 値の名前を文字列にする | TUKI0001 | 未定 | switch で名前を返すメソッドを書く |
$"{m}" | 値の名前の文字列への埋め込み | TUKI0001 | 未定 | 番号でよければ (int)m を埋め込む。名前が必要なら switch で名前を返すメソッドを書く |
"x" + m | 値の名前の文字列への連結 | TUKI0001 | 未定 | 番号でよければ (int)m を連結する。名前が必要なら switch で名前を返すメソッドを書く |
string.Format("{0}", m) | 書式による名前の埋め込み | TUKI0001 | 未定 | 番号でよければ (int)m を渡す。名前が必要なら switch で名前を返すメソッドを書く |
| 値の表現 | 整数として表現されます。値そのものは普通に使えますが、実行時に名前を持っていないので、名前を文字列として取り出す形は通りません |
[System.Flags] | 適用されるのは名前を出すときなので、この環境では出力が変わりません(組み合わせの | は、この属性が無くても書けます) |
列挙型の宣言
Section titled “列挙型の宣言”using UnityEngine;using Tsukimi;
public enum Mode { Off, On }public class TyEnumDeclare : TsukimiBehaviour{ void Start() { Mode m = Mode.On; Debug.Log((int)m); // => 1 }}using UnityEngine;using Tsukimi;
public enum Code { Ok = 200, NotFound = 404 }public class TyEnumExplicit : TsukimiBehaviour{ void Start() { Code c = Code.NotFound; Debug.Log((int)c); // => 404 }}基になる型の指定
Section titled “基になる型の指定”using UnityEngine;using Tsukimi;
public enum Small : byte { A = 1 }public class TyEnumUnderlying : TsukimiBehaviour{ void Start() { Small s = Small.A; Debug.Log((byte)s); // => 1 }}組み合わせ(Flags)
Section titled “組み合わせ(Flags)”[System.Flags] を付けても、| での組み合わせ方は変わりません(非対応)。
using UnityEngine;using Tsukimi;
[System.Flags]public enum Perm { None = 0, Read = 1, Write = 2 }public class TyEnumFlags : TsukimiBehaviour{ void Start() { Perm p = Perm.Read | Perm.Write; Debug.Log((int)p); // => 3 }}フィールドとして保持
Section titled “フィールドとして保持”using UnityEngine;using Tsukimi;
public enum Mode { Off, On }public class TyEnumField : TsukimiBehaviour{ void Start() { M = Mode.On; Debug.Log((int)M); // => 1 }
public Mode M;}using UnityEngine;using Tsukimi;
public enum Mode { Off, On }public class TyEnumArray : TsukimiBehaviour{ void Start() { Mode[] ms = new Mode[2]; ms[0] = Mode.On; Debug.Log((int)ms[0]); // => 1 }}型の中の宣言
Section titled “型の中の宣言”using UnityEngine;using Tsukimi;
public struct Holder { public enum Mode { Off, On } }public class TyEnumNested : TsukimiBehaviour{ void Start() { Holder.Mode m = Holder.Mode.On; Debug.Log((int)m); // => 1 }}