【C#】枚举

枚举

**定义:**枚举类型(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
        }
    }
}

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值