C#笔记07 枚举
——本系列是基于人民邮电出版社《C#2008 C#图解教程》、清华大学出版社《C#入门经典(第五版)》两本书的自学C#笔记,如果您发现了本文的纰漏,还望不吝指正。
写在前边
*复习:类型是一种模版,C#提供了15种预定义类型,还可以创建自己的用户定义类型,有6种类型:
- 类类型(class)
- 结构类型(struct)
- 数组类型(array)
- 枚举类型(enum)
- 委托类型(delegate)
- 接口类型(interface)
1. 枚举类型的声明
- 枚举是值类型,直接存储它们的数据
- 枚举只有一种类型的成员:命名的整数值常量
enum <枚举名>
{
枚举项, //逗号分隔
枚举项,
枚举项
}
enum TrafficLight
{
Green,
Yellow,
Red
}
1).枚举的本质是int
2).枚举可以和int类型进行互换——使用显示转换
3).默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。
4).可以使用赋值符号,重新给枚举项赋int值
例如:
enum FaceCards
{
//Member //所赋的值
Jack = 11, //11
Queen, //12
King, //13
Ace, //14
value=4, //4
value2, //5
value3 = Ace //14
}
2.枚举的使用
1).在使用前,先定义出你自己的枚举类型
2).同其他数据类型一样的使用方法,用变量去装载,使用枚举类型名,跟着一个点和成员名
例如:使用下边的代码访问第一个例子中枚举TrafficLight所定义的三个颜色
stctic coid Main()
{
Console.WriteLine("{0}",TrafficLight.Green);
Console.WriteLine("{0}",TrafficLight.Yellow);
Console.WriteLine("{0}",TrafficLight.Red);
}
3).尽管枚举的本质是int,但是不可以比较不同枚举类型之间的成员
例如:
enum FirstEnum
{
Mem1,
Mem2
}
enum SecondEnum
{
Mem1,
Mem2
}
class Program
{
stctic coid Main()
{
if(FirstEnum.Mem1 < FirstEnum.Mem2) //正确,可以比较相同枚举类型内成员
Console.WriteLine("True");
if(FirstEnum.Mem1 < SeconedEnum.Mem1) //错误,不可以比较不同枚举类型之间的成员
Console.WriteLine("True");
}
}
3.枚举的转换
enum WaterSta
{
固态 =10,
液态,
气态
}
WaterSta water = WaterSta.液态;
water = 10;
1).和int类型进行转换——显示转换
water = (WaterSta)11;
2).枚举可以转成字符串——枚举变量名.ToString()
string temp = water.ToString();
3).字符串转枚举
(枚举类型)Enum.Parse( typeof(枚举类型),“你要转换的字符串”);
GameSta myGame = GameSta.MenuSta;
myGame = (GameSta)Enum.Parse(typeof(GameSta), "ExitSta");
//myGame从MenuSta转到了ExitSta
4.枚举enum和switch联动
直接上代码
enum QQSta
{
Qme,
OnLine,
OffLine,
Leave,
Busy
}
QQSta myQQSta = QQSta.Qme;
Console.WriteLine("1.Qme,2.OnLine,3.OffLine,4.Leave,5.Busy");
string input = Console.ReadLine();
switch (input)
{
case "1":
myQQSta = (QQSta)0; //第一个枚举数的值为 0
break;
case "2":
myQQSta = (QQSta)1;
break;
case "3":
myQQSta = (QQSta)2;
break;
case "4":
myQQSta = (QQSta)3;
break;
case "5":
myQQSta = QQSta.Busy;
break;
default:
break;
}
Console.WriteLine("你QQ现在的状态为" + myQQSta);