C#遍历大量的数据foreach循环C#游戏开发快速入门大学霸
C#遍历大量的数据foreach循环C#游戏开发快速入门大学霸
5.3.2 遍历大量的数据C#遍历大量的数据foreach循环C#游戏开发快速入门大学霸
如果需要在脚本中使用同样的操作去一一判别大量的数据,C#倒是提供了一种不错的机制,读者或许会有兴趣,就是“循环”。C#里有3种用于实现循环的语句,分别是:foreach、for和while。本小节打算依次介绍它们的使用方法,最后再将这种机制应用到游戏中。
1.foreach循环C#遍历大量的数据foreach循环C#游戏开发快速入门大学霸
为了更好的说明foreach循环的使用方法,下面将演示一个示例,此示例会使用foreach循环遍历数组、列表和字典里的所有数据,并使用if语句选择所需的数据。为MyScript脚本添加下面的代码:
01 using UnityEngine;
02 using System.Collections.Generic;
03
04 public class MyScript : MonoBehaviour
05 {
06 void Start()
07 {
08 string[] myArray = new string[] {“Monday”,”Tuesday”,”Wednessday”};
09 foreach(string myStrArray in myArray) //循环遍历数组
10 {
11 if(myStrArray == “Monday”)
12 Debug.Log(“There is “+myStrArray+” in array.”);
13 }
14
15 List<string> myList = new List<string> {“Monday”,”Tuesday”,”Wednessday”};
16 foreach(string myStrList in myList) //循环遍历列表
17 {
18 if(myStrList == “Tuesday”)
19 Debug.Log(“There is “+myStrList+” in list.”);
20 }
21
22 Dictionary<int,string> myDict = new Dictionary<int,string>
23 {{10,”Monday”},{20,”Tuesday”},{30,”Wednessday”}};
24 foreach(KeyValuePair<int,string> myStrDic in myDict) //循环遍历字典
25 {
26 if(myStrDic.Key == 30)
27 Debug.Log (“There is “+myStrDic.Value+” in dictionary”);
28 }
29 }
30 }
运行游戏,在Console视图里查看脚本输出的信息,如图5-16所示。
图5-16 使用foreach循环的示例C#遍历大量的数据foreach循环C#游戏开发快速入门大学霸
q 脚本08、15和22行的代码,分别声明了数组、列表和字典,并且为它们初始化了3组数据;
q 脚本09、16和24行的代码,则分别开始使用foreach语句遍历数组、列表和字典。以09行的语句为例:
09 foreach(string myStrArray in myArray) //循环遍历数组
foreach后括号“( )”里的语句,表示的含义是:要遍历的是myArray数组,而数组中的每个数据都将先被存储于同类型的myStrArray变量中。语句的书写格式如下:
foreach(数据类型 变量名 in 数组名)
q 脚本11、18和26行的代码,分别使用if语句判断变量中的数据,是否是指定的数据。以11行的代码为例:
11 if(myStrArray == “Monday”)
if后括号“( )”里的语句,是一个关系表达式,当变量myStrArray里的数据字符串是Monday时,表达式的值才是true。
q 脚本12、19和27行的代码,则表示当使用if语句判断出数组、列表和字典中存在指定数据时,会输出文字信息到Console视图。以12行的代码为例:
12 Debug.Log(“There is “+myStrArray+” in array.”);
如果数组中存在数据“Monday”,则会在Console视图里输出“There is Monday in array”。
2.for循环
for循环也可以遍历数组、列表与字典中的所有数据,但是它与foreach语句的些许区别在于,for循环表达的含义更像是:让一段代码执行指定的次数。例如,执行5次输出语句,做10次同样的操作等等。下面是使用for循环的一个简单示例:
01 using UnityEngine;
02 using System.Collections.Generic;
03
04 public class MyScript : MonoBehaviour
05 {
06 void Start()
07 {
08 List<string> myList = new List<string> {“Monday”,”Tuesday”,”Wednessday”};
09 for(int i = 0;i < myList.Count;i++)
10 {
11 Debug.Log(myList[i]);
12 if(myList[i] == “Tuesday”)
13 Debug.Log(“There is “+myList[i]+” in list.”);
14 }
15 }
16 }
运行游戏,在Console视图里查看脚本输出的信息,如图5-17所示。
图5-17 使用for循环的示例
q 脚本08行的代码,声明了一个列表,且为列表添加了3组数据
q 脚本09行的代码,就是一个for语句,如下:
09 for(int i = 0;i < myList.Count;i++)
for后面括号里的语句,所表示的含义是:一共要循环myList.Count次。变量i类似于一个计数器,记录着当前循环的次数。例如,要循环15次,可以使用下面的for循环语句:
for(int i = 0;i < 15;i++)
q 脚本11~13行的多条语句,是要执行指定循环次数的代码。其中11行的语句用于在Console视图中输出列表中的所有数据;12、13行的代码,是一个if语句,用于判断列表中是否存在指定的数据,如果存在就会输出相应的信息到Console视图;
3.while循环
while循环与for循环的操作效果是相同的,即让循环执行一定的次数。但不同的是,从for循环的语句中可以很明确的看出循环的次数,在达到指定次数以后就停止。while循环表达的没有这么明确,但它会明确的告诉Unity,什么时候停止循环。下面的脚本代码,是将for循环的示例改写成了while循环,如下:
01 using
UnityEngine;
02 using System.Collections.Generic;
03
04 public class MyScript : MonoBehaviour
05 {
06 void Start()
07 {
08 List<string> myList = new List<string> {“Monday”,”Tuesday”,”Wednessday”};
09 int i = 0;
10 while(i < myList.Count)
11 {
12 Debug.Log(myList[i]);
13 if(myList[i] == “Tuesday”)
14 Debug.Log(“There is “+myList[i]+” in list.”);
15 i++;
16 }
17 }
18 }
运行游戏,在Console视图里查看脚本输出的信息,如图5-18所示。
图5-18 使用while循环的示例
q 脚本10行的语句,就是while循环语句,它后面的括号里,只有一个关系表达式,此关系表达式决定了循环在什么时候结束;
其它部分与for循环的示例一样,这里就不做重复说明了C#遍历大量的数据foreach循环C#游戏开发快速入门大学霸。
Comments are closed.