1.枚举
枚举是值类型
枚举的语法格式:enum 枚举名{
枚举值1,
枚举值2,
枚举值3
}
enum Season
{ Spring,
Summer,
Autumn,
Winter
}
适用场合:适合那些固定的值或者代表一些特定的状态
默认情况下:枚举值从0开始,依次递增
枚举值可以更改的,如果枚举值2的值为-2,那么枚举值1为0,枚举值3是-1
如果枚举值1为-1,枚举值2为0,枚举值3为1
枚举和string,int之间的相互转换:
----int转枚举
Color c = (Color)1;
----枚举转int
int i = (int)Color.Red;
----枚举转string
string s= Enum.GetName(typeof(Color), 3);
----string转枚举
Color c = (Color)Enum.Parse(typeof(Color), "RED");
2.struct
语法格式:
struct 结构体名
{
//字段
public int hp;
//构造函数
//语法格式:
public 结构体名(参数列表)
{
赋值操作;
}
}
结构体的特点:
1.是值类型
2.构造函数可以有多个
3.不能在结构体内部调用或重写默认的构造函数
4.结构体成员--字段要全部赋值
5.实例化结构体对象的时候,采用的是new关键字.需要
注意的是,此时new关键字的作用仅仅是创建对象,没有开辟任何
内存空间,这和类实例化对象是不一样滴.
6.结构体和类是同级关系
7.结构体内部可以存在多种成员变量,一般情况下,构成成员变量的
组成是字段,属性以及函数(方法)
8.构造函数是特殊的方法,它和一般的方法不一样的地方在于
构造函数不可能存在返回值.
9.构造函数支持方法重载,也就是说构造函数中的参数列表不可以完全相同(数量)
它具备方法重载成立的所有判断标准
10.结构体成员--字段不可以被直接初始化,但是常量字段除外.
11.结构体没有析构函数
结构体和类的区别:
相同之处:
1.都有构造函数
2.都有字段\属性\方法
3.在创建实例的时候,都是用的是new关键字(只不过new的意义不一样)
4.结构体和类中的构造函数都支持方法重载(可以有多个)
区别:
1.结构体是不允许修改默认构造函数的,而类可以;
2. 结构体是值类型,而类是引用类型
3 .在结构体构造函数中,结构体的所有字段成员都需要赋值,而类不需要
4. 结构体的字段是不允许直接赋值的,但是常量字段除外
5.结构体中没有析构函数,而类有
6 .结构体new实例化的时候,仅仅是创建对象,没有在堆去开辟空间,而类new开辟了
7 .结构体不能被继承,而类可以
结构体在创建实例的时候,不需要开辟空间,因为结构体是值类型,那么适合存储小数据结构,就是那种需要调用一次就可以计算结果的结构,代表:向量类vector3
而类在创建实例的时候,需要在堆中开辟空间,因为类是引用类型,适合存储大数据需要长时间占据内存的结构,代表 玩家类:Player
3.访问修饰符
public(公有的), 所有类都可以访问.
private(私有的),只有本类可以访问.
4.this关键字
在结构体内部,代表结构体对象.
在类内部,代表类对象.
this关键字不可以出现在有static(静态)修饰的方法中.
补充内容:与运算 & 以及 或运算 |
与运算,对位全是1,结果就是1,否则就是0
Color c = Color.YELLOW & Color.BULE;//0
Console.WriteLine(c);//RED
或运算 对位全是0为0,否则就是1
Color d = Color.YELLOW | Color.BULE|Color.RED;//3
Console.WriteLine(d);//GREEN
补充 IsDefind检测枚举中是否包含某个枚举值
if (Enum.IsDefined(typeof(Color), 7))
{
Console.WriteLine("枚举中包含7");
}
else {
Console.WriteLine("枚举中不包含7");
}