C#笔记07 枚举

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); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值