大量数据的存储与引用

5.3.1  大量数据的存储与引用

C#指定了3种存储与引用大量数据的方法,分别是:数组、列表和字典。本小节会使用简单的小示例依次讲解它们,至于大的游戏示例,会在本章讲解完所有的知识点以后给出。

1.数组

数组可以存储大量同类型的数据,它的声明格式为:

数据类型[ ] 数组名;

q  所有常用的数据类型,在本书第3章中已经使用表格列出了;

q  数据类型后面跟着的是一对中括号“[ ]”;

q  数组名与变量名一样,必须遵循C#的命名规定;

例如,下面的代码语句声明,并且初始化了数组:

int[] myIntArray = {1,3,5,7,9};

读者应该可以从这条语句中看出,声明的是int类型的数组,数组名为myIntArray,存储了5个int类型的数据,分别是1、3、5、7和9。

引用数组中指定数据的格式为:

数组名[下标];

q  下标是从0开始的整数,当下标为0时,表示引用的是数组中的第1个数据;若为3时,表示引用的是数组中的第4个数据;其它数据的引用方式依此类推;

为脚本MyScript添加下面的代码:

01     usingUnityEngine;

02     usingSystem.Collections;

03    

04     publicclass MyScript : MonoBehaviour

05     {

06              private int[] myIntArray = {1,3,5,7,9};                //数组的声明和初始化

07              voidStart()

08              {

09                        Debug.Log ("数组中的第1个数据是:" + myIntArray[0]);          //数组数据的引用

10                        Debug.Log ("数组中的第5个数据是:" + myIntArray[4]);          //数组数据的引用

11              }

12     }

运行游戏,在Console视图里查看脚本输出的信息,如图5-13所示。

图5-13  使用数组的示例

2.列表

列表与数组类似,同样用于存储大量同类的数据。但是似乎C#开发人员相对于数组,更偏爱列表一些。除非逼不得已,否则他们不会从列表和数组二者间选择后者,基本上是因为下面的几个原因:

q  数组在被声明了以后,存储的数据的个数就是固定的了,而列表则比较灵活,没有这方面的限制,如果开发者需要,它还可以存储更多的数据;

q  列表可以更方便的增加和删除存储于其中的数据;

这次作者打算在演示一个示例以后,在具体介绍列表的声明和使用等等。为脚本MyScript添加下面的代码:

01     usingUnityEngine;

02     using System.Collections.Generic;                                                                 //必须添加的语句

03    

04     publicclass MyScript : MonoBehaviour

05     {

06              private List<int> myIntList = newList<int>();                                       //声明列表

07              voidStart()

08              {

09                       myIntList.Add (1);                                                                               //添加数据到列表

10                       myIntList.Add (3);

11                       myIntList.Add (5);

12                        Debug.Log ("列表中总共存储的数据个数是:" + myIntList.Count);

13                        Debug.Log ("列表中第1个数据是:" + myIntList[0]);                 //引用列表中的数据

14                        Debug.Log ("列表中第3个数据是:" + myIntList[2]);

15    

16                       myIntList.Add (7);

17                        Debug.Log ("列表中第4个数据是:" + myIntList[3]);

18              }

19     }

运行游戏,在Console视图里查看脚本输出的信息,如图5-14所示。

图5-14  使用列表的示例

q  脚本02行的语句,与以往不同,需要读者主动修改成这个样子,此语句是在脚本中使用列表的前提,顺便提及新建脚本时,语句是下面的这个样子:

02     usingSystem.Collections;

q  脚本06行的语句如下:

06              private List<int> myIntList = newList<int>();                                       //声明列表

此语句声明了列表,其名为myIntList,目前还没有存储任何数据;和数组一样,声明列表时也需要指定指定列表中可以存储的数据的类型,本示例中存储的类型是int。

q  脚本09~11行编写了类似于下面的语句:

09                       myIntList.Add (1);                                                                               //添加数据到列表

通过这种方式,一个int类型的数据1,才被存储到了列表中。

q  脚本13、14行,引用列表数据的方式如下:

09                       myIntList[0]

单从编写样式上看,它的引用方式与数组引用自身数据的方式一模一样,而且它的下标也是从0开始,表示存储的第1个数据,其它数据的存储下标以此类推。

q  脚本16、17行,是列表区别于数组的使用方法,因为列表中可以存储的数据的个数是没有限定的;

3.字典

字典的使用方法与列表类似,但是它的声明需要指定一对数据类型,即键(Key)和值(Value)这两个数据的数据类型。使用字典最大的好处就是,可以通过Key,找到与之对应的Value。对于游戏的实际意义是,一个网络游戏一定需要存储大量用户的游戏信息,而游戏程序定位这些信息的方式通常是使用ID。也就是说,一个玩家就有一个ID,而ID关联了用户的所有信息,所以只要知道用户的ID,就不愁找不到玩家的其它游戏信息了。

在讲解字典的语法前,同样先演示一个示例,为脚本MyScript添加下面的代码:

01     usingUnityEngine;

02     using System.Collections.Generic;

03    

04     publicclass MyScript : MonoBehaviour

05     {

06              private Dictionary<int,string> myDic= new Dictionary<int,string>();              //声明字典

07              voidStart()

08              {

09                       myDic.Add(10,"Monday");                                   //添加数据到字典

10                       myDic.Add(20,"Tuesday");

11                       myDic[30] = "Wednesday";

12                        Debug.Log ("字典中总共存储的数据个数是:" + myDic.Count);

13                        Debug.Log ("字典中key为10的数据是:" + myDic[10]);                   //引用字典中的数据

14                        Debug.Log ("字典中key为20的数据是:" + myDic[20]);

15                       myDic[40] = "Thursday";

16                        Debug.Log ("字典中key为40的数据:" + myDic[40]);

17              }

18     }

运行游戏,在Console视图里查看脚本输出的信息,如图5-15所示。

图5-15  使用字典的示例

q  脚本02行的语句,对于在脚本中使用字典同样是不可缺少的,

q  脚本06行的语句:

06              private Dictionary<int,string> myDic= new Dictionary<int,string>();

是字典的声明部分,从格式上来看与列表的声明方式十分相近。只不过声明字典需要同时指定键和值两个数据的数据类型。

q  脚本09~10行,为字典添加数据的方式与列表相似:

09                       myDic.Add(10,"Monday");                                   //添加数据到字典

但是字典还有其它的方式,即脚本11行的代码

11                       myDic[30] = "Wednesday";

这种方式,乍看之下与数组存储数据的方式一样,但是此种方式里,中括号“[ ]”里的数字可不是“下标”,而是“键”。

q  脚本13、14和16行,字典引用数据的形式与数组和列表一致,但是中括号“[ ]”里的数字可不是“下标”,而是“键”。

13                        myDic[10]

 


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值