C#基础内容之枚举

C#基础内容

文章目录

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

值和引用的区别

函数相关

排序初探

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

1、数据集合

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

2、自定义

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

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

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

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

枚举

概念

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

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

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

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

2、声明枚举语法

c 复制代码
enum E_自定义枚举名
{
    自定义枚举项名字,	//枚举中包裹的 整形常量 默认为0
    自定义枚举项名字1,	//1
    自定义枚举项名字2,	//2
}
2、声明枚举
c 复制代码
namespace语句块中 //不能再函数语句块中声明
enum E_MonsterType{
    Normal,	//0
    Boss,	//1
}
3、枚举的使用
c 复制代码
//声明枚举变量
//自定义枚举类型 变量名 = 默认值;(自定义枚举类型.枚举项)
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、枚举的类型转换
c 复制代码
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、枚举的作用
c 复制代码
在游戏开发中,许多时候对象会有很多的状态
    比如玩家有一个动作状态,我们需要用一个变量或者标识来表现玩家的状态
枚举可以帮助我们清晰的分清楚状态的含义
思考 选择英雄
c 复制代码
//请选择英雄性别与职业,最后打印英雄的基本属性(攻击力、防御力。技能)
//性别:
//男(攻击力+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("请输入数字");
                }

            }
        
    }
}
}
相关推荐
CodeCraft Studio4 小时前
PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 Base64
开发语言·python·pdf·base64·aspose·aspose.pdf
零点零一4 小时前
VS+QT的编程开发工作:关于QT VS tools的使用 qt的官方帮助
开发语言·qt
lingchen19066 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
gb42152876 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
一朵梨花压海棠go6 小时前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript
蒋星熠6 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程
翻滚丷大头鱼7 小时前
Java 集合Collection—List
java·开发语言
aramae7 小时前
C++ -- 模板
开发语言·c++·笔记·其他
胡耀超7 小时前
4、Python面向对象编程与模块化设计
开发语言·python·ai·大模型·conda·anaconda
索迪迈科技8 小时前
java后端工程师进修ing(研一版 || day40)
java·开发语言·学习·算法