一、enum位域[Flags]
[Flags]
public enum Week
{
//星期一
monday = 1 << 0,
//星期二
tuesday = 1 << 1,
//星期三
wednesday = 1 << 2,
//星期四
tursday = 1 << 3,
//星期五
friday = 1 << 4,
//星期六
saturday = 1 << 5,
//星期日
sunday = 1 << 6
}
[Flags]
public enum Week
{
//星期一
monday = 0x1,
//星期二
tuesday = 0x2,
//星期三
wednesday = 0x4,
//星期四
thursday = 0x8,
//星期五
friday = 0x10,
//星期六
saturday = 0x20,,
//星期日
sunday = 0x40
}
4、“^”:表示从两者的并集中去除两者的交集(把两个的元素合并到一起,如果两个中有公共元素,要将其除去)
5、“~”:表示取反
6、名称和下标的转换
Week weeks = Week.tuesday | Week.monday;
Debug.Log (Weeks );-->monday, tuesday
weeks = Week.monday & Weeks;
Debug.Log (Weeks );-->monday
weeks = weeks & Week.monday;
Debug.Log (weeks );-->monday
weeks = (Week.monday | Week.wednesday)^ (Week.tuesday | Week.monday);
Debug.Log (weeks );-->tuesday, wednesday
weeks = (Week.monday | Week.wednesday) ^ (Week.tuesday | Week.sunday);
Debug.Log (weeks );-->monday, tuesday, wednesday, sunday
week = Week.tuesday | Week.monday | Week.wednesday;
weeks = weeks &(~Week.monday);-->tuesday, wednesday
weeks = Week.tuesday | Week.monday;
Debug.Log ((int )weeks );-->3 tuesday, tursday
weeks = (Week )Enum.Parse (typeof(Week ),"10");
Debug.Log (weeks );--> tuesday, tursday
二、Enum、Int、String的相互转换
1、Enum-->String
(1)利用Object.ToString()方法:如Debug.Log (Week.tuesday.ToString ())的值是"tuesday"字符串; (2)利用Enum的静态方法GetName: public static string GetName(Type enumType,Object value) public static string[] GetNames(Type enumType) 例如:Debug.Log (Enum.GetName (typeof(Week), 2) );-->tuesday与Debug.Log (Enum.GetName (typeof(week), week.tuesday) );-->tuesday
2、String-->Enum
(1)利用Enum的静态方法Parse: public static Object Parse(Type enumType,string value) 例如:weeks = (Week )Enum.Parse (typeof(Week ),"10");
Debug.Log (weeks );--> tuesday, tursday
3、Enum-->Int
(1)因为枚举的基类型是除 Char 外的整型,所以可以进行强制转换。 例如:(int)Week.monday , (byte)Week.monday
Debug.Log(Week.monday.ToString("D" ));
(2)遍历枚举
Type weekType = typeof (Week); Array arrays = Enum.GetValues(weekType); for (int i = 0; i <arrays.LongLength ; i++) Debug.Log((int)arrays.GetValue(i) );
4、Int-->Enum
(1)可以强制转换将整型转换成枚举类型。 例如:Week weeks= (Week)2; -->weeks=tuesday; (2)利用Enum的静态方法ToObject。 public static Object ToObject(Type enumType,int value) 例如:Week weeks = (Week)Enum.ToObject(typeof(Week), 2),那么weeks即为Week.tuesday
(3)遍历枚举
foreach (Week typeWeek in Enum.GetValues(typeof (Week)))
{
Debug.Log(typeWeek );
}
5、判断某个整型是否定义在枚举中的方法:Enum.IsDefined
public static bool IsDefined(Type enumType,Object value)
例如:Enum.IsDefined(typeof(Week), n))