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("请输入数字");
}
}
}
}
}