C#基础内容之枚举

发布于:2024-04-25 ⋅ 阅读:(15) ⋅ 点赞:(0)

C#基础内容


复杂数据类型(枚举、数组、结构体)

值和引用的区别

函数相关

排序初探

复杂数据(变量)类型特点

1、数据集合

一般时读个数据(变量)集合在一起构成的数据

2、自定义

一般可以自己取名字,可以自定义的数据(变量)

枚举:整形常量的集合,可以自定义

数组:任意变量类型顺序存储的数据

结构体:任意变量的数据合集,可以自定义

枚举

概念

它是一个被命名的整形常量集合,一般用来表示状态、类型等

1、声明枚举 和 声明枚举变量

声明枚举:创建一个自定义的枚举类型

声明枚举变量:使用声明的自定义枚举类型,创建一个枚举变量

2、声明枚举语法

enum E_自定义枚举名
{
    自定义枚举项名字,	//枚举中包裹的 整形常量 默认为0
    自定义枚举项名字1,	//1
    自定义枚举项名字2,	//2
}
2、声明枚举
namespace语句块中 //不能再函数语句块中声明
enum E_MonsterType{
    Normal,	//0
    Boss,	//1
}
3、枚举的使用
//声明枚举变量
//自定义枚举类型 变量名 = 默认值;(自定义枚举类型.枚举项)
E_MonsterType monsterType = E_MonsterType.Normal;
if ( monsterType == E_MonsterType.Normal){
    Console.WriteLine("normal逻辑");
}
//枚举和switch配合使用
E_MonsterType monsterType = E_MonsterType.Boss;
switch (monsterType){
    case E_MonsterType.Normal:
        Console.WriteLine("普遍怪物逻辑");
        break;
    case E_MonsterType.Boss:
        Console.WriteLine("Boss逻辑");
        break;
}
4、枚举的类型转换
1、枚举和int互转
    int i = (int)monsterType;
	//int 转枚举
	monsterType = 0;
2、枚举和string互转
    string str = monsterType.ToString();
	Console.WriteLine(str);	//Normal
	//把string转成枚举
	monsterType = (E_MonsterType)Enum.Parse(typeof(E_MonsterType),"Normal");
	Console.WriteLine(monsterType);	//Normal
5、枚举的作用
在游戏开发中,许多时候对象会有很多的状态
    比如玩家有一个动作状态,我们需要用一个变量或者标识来表现玩家的状态
枚举可以帮助我们清晰的分清楚状态的含义
思考 选择英雄
//请选择英雄性别与职业,最后打印英雄的基本属性(攻击力、防御力。技能)
//性别:
//男(攻击力+50,防御力+100)
//女(攻击力+150,防御力+20)
//职业:
//战士(攻击力+20,防御力+100,技能:冲锋)
//猎人(攻击力+120,防御力+30,技能:假死)
//法师(攻击力+200,防御力+10,技能:奥术冲击)

//举例:你选则了“女性法师”,攻击力:350,防御力:30,职业技能:奥数冲击

enum Sex
{
    Man,
    Woman,
}
enum Occupation
{
    Warrior,
    Hunter,
    Master,
}

namespace App
{
    class MyClass
{
    public static void Main()
    {
            while (true)
            {
                try
                {
                    Console.WriteLine("请选择性别(男0,女1)");
                    Sex sex = (Sex)int.Parse(Console.ReadLine());
                    string sexStr = "";
                    int atk = 0, def = 0;
                    switch (sex)
                    {
                        case Sex.Man:
                            sexStr = "男性";
                            atk += 50;
                            def += 100;
                            break;
                        case Sex.Woman:
                            sexStr = "女性";
                            atk += 150;
                            def += 20;
                            break;
                        default:
                            Console.WriteLine("请输入0或1");
                            continue;
                    }
                    Console.WriteLine("请选择职业(战士0,猎人1,法师2)");
                    Occupation occupation = (Occupation)int.Parse(Console.ReadLine());
                    string skill = "",occ="";
                    switch (occupation)
                    {
                        case Occupation.Warrior:
                            atk += 20;
                            def += 100;
                            occ = "战士";
                            skill = "冲锋";
                            break;
                        case Occupation.Hunter:
                            atk += 120;
                            def += 30;
                            occ = "猎人";
                            skill = "假死";
                            break;
                        case Occupation.Master:
                            def += 10;
                            occ = "法师";
                            skill = "奥术冲击";
                            break;
                        default : Console.WriteLine("输错了");
                            continue;
                    }

                    Console.WriteLine("你选择了{0}{1},攻击力:{2},防御力{3},职业技能:{4}", sexStr, occ, atk, def, skill);
                    Console.WriteLine("按任意键继续:");
                    Console.ReadLine();
                }
                catch
                {
                    Console.WriteLine("请输入数字");
                }

            }
        
    }
}
}

网站公告

今日签到

点亮在社区的每一天
去签到