1.枚举的概念
2.枚举类型转换
枚举与int类型的转换
枚举与string类型的转换
1.概念介绍
枚举类型使用enum关键字声明,包含了一些易读的标识符。
Q:如何声明一个枚举类型?
A:
enum <enum_name>
{
enumeration list
};
枚举关键字 枚举类型名字
{
成员变量
};
例子:
enum emAction
{
Get,
Wash,
Eat,
Play,
};
也可以加占位成员(个人习惯)
enum emAction
{
None,
Get,
Wash,
Eat,
Play,
};
这里emAction就是一个枚举类型的名字,他有许多成员。
命名方式是 类型缩写+易读英文 em + Action
Q:声明一个枚举类型后,如何声明一个枚举变量?
A:
emAction mAction;
注意:
如果要public emAction mAction;声明emAction枚举类型时候也得有public。
也就是说类型权限不能比变量权限低。
声明的枚举变量命名为m+枚举类型的易读英文 m+Action
枚举变量是存放枚举类型成员的,比如
mAction=emAction.None;
如果将成员转为int输出,那么以第一个成员为基础,第二个+1,第三个+2...依次加1
第一个成员转为int默认值是0
枚举因为他的成员名字易读性被广泛应用。
比如判断:
switch(mAction)
{
case emAction.Get:
print("我起床");
break;
case emAction.Wash:
print("我洗漱");
break;
case emAction.Eat:
print("我吃饭");
break;
case emAction.Play:
print("我玩");
break;
}
这样,每个情况可以清楚的明白含义,因为什么做什么。
不然以case 0,case 1等,别人看代码或过一段时间自己回头再看,得重头捋一遍。
2.枚举类型转换
(1)枚举和string转换
1.枚举转换为string
mAction=emAction.None;
Debug.Log(mAciton);输出为None
Debug.Log(mAction.ToString());输出也是None
2.string转换为枚举
using System;
接口Enum.Parse(EnumType,string)将string转换为枚举值,参数是枚举类型,字符串。返回Object类型
mAction=(emAction)Enum.Parse(typeof(emAction),"Wash");
Debug.Log(mAction);输出为Wash
mAction=(emAction)Enum.Parse(typeof(emAction),"Wash111");是错误的,因为没有Wash111这个成员。
(2)枚举和int转换
1. 枚举值转换为int:
mAction = emAction.Play;
int iPlay = (int)mAction;
输出为4
注意:如果在Inspector面板给变量赋值了,比如给mAction,那么Inspector的值会覆盖掉我们代码给mAction的初值。
int iConvertValue = Convert.ToInt32(mAction);
2. int转换为枚举:
mAction = (emAction)3;
Debug.Log(mAction);输出为Eat(int数对应的枚举成员)
mAction=(emAction)Enum.ToObject(typeof(emAction),1);
Debug.Log(mAction);输出为Get(int数对应的枚举成员)