第02部分 C#复杂数据结构
1> 复杂数据类型
-
数据类型的本质时固定的内存大小区域的别名,其作用时编译器预算对象(变量)的内存大小,从而为其分配。
-
类型特点:
- 枚举:整型常量的集合,可以自定义常量名。
- 数组:任意变量类型顺序存储的数据。
- 结构体:任意变量的数据集合,可以自定义。
-
一般是多个数据(变量)集合在一起构成的数据,也存在自定义类型集合。
2> 枚举
-
被命名的整型常量的集合,一般用来表示状态,类型等。
-
枚举可以声明在命名空间,类,结构体中。
Enum E_Example
{
Monday,//初始默认0开始
TuesDay=2//显式关联
}
- 枚举的声明:
E_Example e = 0;//或者new E_Example,采用默认值0
= (E_Example)n;//n >= 0
= E_Example.枚举项;
- 枚举可以与string和int之间转换:
int num = (int)E_Example.枚举项;// var e = (E_Example)num;
string str = E_Example.枚举项.ToString();
var e = (E_Example)Enum.Parse(typeof(E_Example),str);
- 枚举的作用:在游戏开发中,对象很多时候会有许多状态,例如动作状态,用一个变量或标识符来表示当前玩家处于哪种状态。枚举可以帮助我们清晰的分清楚状态的含义。
3> 一维数组
-
数组是存储一组相同数据类型的集合,分为一维,多维,交错数组。一般讲数组指的是一维数组,从抽象Array类派生。
-
依靠索引值顺序排序的存储容器,是object,是引用类型。
-
数组的声明:
//1.变量类型[] 数组名;//只声明
//2.变量类型[] 数组名 = new 变量类型[Length];
//3.int[] arr=new int[Length]{1,2,3,4...};
//4.int[] arr2=new int[]{1,2,3,4};
//5.int[] arr3={1,2,3,4};
//类型要保持一致,或者可以隐式转换
- 一维数组是静态数组,长度不可变,其索引从0开始,各常见类型默认值不同,数组元素的默认值为C#内置各类型默认值。
- 数组的使用:
- 数组的长度:arr.Length;
- 通过索引获得数组中的元素,索引最大值为 MaxIndex = Length -1;
- 索引不能越界。通过Array.IndexOf(arr,element);当不存在时返回 -1;
4> 二维数组
- 从Array基类派生,一维数组的实质是[0,n]表示0行n列;
arr[a,b] 表示 a 行 b 列的二维数组;
-
二维数组的长度为:
- a = array.GetLength(0);
- b = array.GetLength(1);
-
二维数组的元素数目:Arr.Count = a*b ;
5> 交错数组
-
表示为数组的数组:Array[][] ,实质上是一维数组作为另一个一维数组的元素。
-
arr[a][b]表示第a索引数组的第b索引元素。
-
交错数组的默认值为null;
6> 隐式类型的数组
- 通常用于查询表达式,匿名类型,对象和集合初始值设定项。
var arr = new[] {
new{
N="123",M=new[]{
1,2,3}
new{
N="345",M=new[]{
3,4,5}}};