枚举
**定义:**枚举类型(enum type)是一组命名常数的值类型。
语法:
1. 声明枚举:enum 枚举名 { 枚举值 };
2. 声明枚举变量:枚举名 枚举变量 = 枚举名.枚举值;
**使用:**用枚举类型描述某一状态,然后在方法中配合switch使用,可以执行某一状态时的行为。
实例:
enum E_QQState {OnLine, Leaving, Busy, Hiding}; //声明枚举名为QQState的枚举,用来描述4种不同的QQ状态。
//定义QQ状态的枚举,并提示用户选择一个在线状态,我们接受输入的数字,并将其转换成枚举类型
//当要读取输入的内容时,要配合异常处理try catch使用,保证输入的内容是符合变量类型使用的要求的。
try
{
Console.WriteLine("请选择一个在线状态:0 online;1 Leaving; 2 Busy; 3 Hiding");
int UserWrite = int.Parse(Console.ReadLine());//读取输入的内容,并用parse法强转成int类型
Enum MyQQState = (E_QQState)UserWrite;//声明枚举MyQQState的枚举变量,并将int类型强转为枚举类型。
Console.WriteLine(MyQQState);
}
catch
{
Console.WriteLine("请输入数字");
}
案例练习:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp基础
{
/// <summary>
/// QQ状态
/// </summary>
enum E_QQState
{
OnLine,
Leaving,
Busy,
Hiding,
};
enum E_CoffeeType
{
SmallCup,
MediumCup,
LargeCup,
};
enum E_HeroGender
{
Man,
Woman,
};
enum E_HeroProfession
{
Warrior,
Hunter,
Mage,
};
internal class Program
{
static void Main(string[] args)
{
#region 练习题一
//题目:定义QQ状态的枚举,并提示用户选择一个在线状态,我们接受输入的数字,并将其转换成枚举类型
//try
//{
// Console.WriteLine("请选择一个在线状态:0 online;1 Leaving; 2 Busy; 3 Hiding");
// int UserWrite = int.Parse(Console.ReadLine());
// Enum MyQQState = (E_QQState)UserWrite;
// Console.WriteLine(MyQQState);
//}
//catch
//{
// Console.WriteLine("请输入数字");
//}
#endregion
#region 练习题二
//用户去星巴克买咖啡,分为中杯35元,大杯40元,超大杯43元
//请用户选择要购买的类型,用户选择后,打印:您购买了***元
//try
//{
// console.writeline("请选择要购买的类型:0:中杯,1:大杯,2:超大杯");
// string cuptypeinput = console.readline();
// int cuptype = int.parse(cuptypeinput);
// enum consumer = (e_coffeetype)cuptype;
// switch (consumer)
// {
// case e_coffeetype.smallcup:
// console.writeline("您购买了小杯,花费35元。");
// break;
// case e_coffeetype.mediumcup:
// console.writeline("您购买了中杯,花费40元。");
// break;
// case e_coffeetype.largecup:
// console.writeline("您购买了大杯,花费43元。");
// break;
// }
//}
//catch (exception)
//{
// console.writeline("请输入数字");
// throw;
//}
#endregion
#region 练习题三
//请用户选择英雄性别与英雄职业,最后打印英雄的基本属性(攻击力,防御力,技能)
//性别:
//男(攻击力+50,防御力+100)
//女(攻击力+150,防御力+20)
//职业:
//战士(攻击力+20,防御力+100,技能:冲锋)
//猎人(攻击力+120,防御力+30,技能:假死)
//法师(攻击力+200,防御力+10,技能:奥术冲击)
//打印举例:你选择了“女性法师”,攻击力:350,防御力:30,职业技能:奥术冲击
try
{
int Attack = 0;
int Deffense = 0;
string Skill = "" ;
string GenderStr = "" ;
string ProfessionStr = "";
Console.WriteLine("请选择英雄性别:男0;女1");
E_HeroGender Gender = (E_HeroGender)int.Parse(Console.ReadLine());
switch (Gender)
{
case E_HeroGender.Man:
Attack += 50;
Deffense += 100;
GenderStr = "男";
break;
case E_HeroGender.Woman:
Attack += 150;
Deffense += 20;
GenderStr = "女";
break;
}
Console.WriteLine("请选择英雄职业:战士0;猎人1;法师2");
E_HeroProfession Profession = (E_HeroProfession)int.Parse(Console.ReadLine());
switch (Profession)
{
case E_HeroProfession.Warrior:
Attack += 20;
Deffense += 100;
Skill = "冲锋";
ProfessionStr = "战士";
break;
case E_HeroProfession.Hunter:
Attack += 120;
Deffense += 30;
Skill = "假死";
ProfessionStr = "猎人";
break;
case E_HeroProfession.Mage:
Attack += 200;
Deffense += 10;
Skill = "奥术冲击";
ProfessionStr = "法师";
break;
}
Console.WriteLine("你选择了\"{0}{1}\",攻击力:{2},防御力:{3},职业技能:{4}", GenderStr, ProfessionStr, Attack,Deffense,Skill);
}
catch (Exception)
{
Console.WriteLine("请输入数字!!");
throw;
}
#endregion
}
}
}