列挙型
書ける形(7)
Section titled “書ける形(7)”| 書き方 | 説明 |
|---|---|
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 { … } } | 型の中の宣言 |
書けない形(2)
Section titled “書けない形(2)”| 書き方 | 説明 | エラー | 理由 | 代わりに |
|---|---|---|---|---|
m.ToString() | 値の名前を文字列にする | TUKI0001 | 未定 | switch で名前を返すメソッドを書く |
$"{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 }}