コンテンツにスキップ

列挙型

書き方説明注意
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 { … } }型の中の宣言
書き方説明エラー理由代替
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]適用されるのは名前を出すときなので、この環境では出力が変わりません(組み合わせの | は、この属性が無くても書けます)
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
}
}
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
}
}

[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
}
}
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
}
}
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
}
}