一、foreach
foreach循环用于列举出集合中所有的元素,foreach语句中的表达式由关键字in隔开的两个项组成,in右边的项是集合名,in左边的项是变量名,又来存放该集合中的每个元素。
foreach循环语句的语法格式如下:
foreach(类型 标识符 in 集合)
{
代码;
}
foreach(数据类型 迭代变量 in 数组或者集合名)
{
使用迭代变量
}
foreach语句括号中的类型和标识符用来声明该语句的循环变量,标识符即循环变量的名称。循环变量相当于一个只读的局部变量。
在每一个循环时,都会从集合中取出一个新的元素值,放到只读变量中去,如果括号中的整个表达式返回值为true,foreach块中的语句就能够执行。一旦集合中的元素都已经被访问到,整个表达式的值为false,控制流程就转入到foreach块后面继续执行后面的语句。
foreach语句经常与数组一起使用。数组的属性:Array.Length数组的容量,利用这个属性,我们可以取得数组对象允许存储的容量值,也就是数组的长度、元素个数。当数组的维数、容量较多时,C#提供了foreach语句,专门用来读取集合/数组中的所有元素,我们把这种功能叫做遍历。
注意点:
- 数据类型必须是和数组类型或者集合里面的元素类型相同。
- 变量名也必须符合命名规则。
- 最重要的一点就是,迭代变量是只能读取数组或者集合里面的值的,但是不能用于给数组或者集合里面的元素赋值,如果给迭代变量赋值,就会出现报错的情况。
备注:循环变量的类型必须与集合的类型相同。集合内元素的个数决定循环内程序段重复执行的次数。
二、案例(1)
using System;
namespace _20220831_2
{
class Program
{
static void Main(string[] args)
{
int x = 0, y = 0;
char[] ch1 = new char[] { '0', '1', '2', '3' };
foreach(char a in ch1)
{
if (a == '0')
x++;
else
y++;
}
Console.WriteLine(ch1);
Console.WriteLine("0的个数为:{0}\n1的个数为:{1}", x, y);
}
}
}
三、案例(2)
using System;
namespace _20220901_1
{
class Program
{
static void Main(string[] args)
{
int[, ,] a = new int[2, 2, 2] { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } };//定义一个2行2列2纵深的3维数组a
foreach (int i in a)
{
Console.WriteLine(i);
}
}
}
}
四、案例(3)
using System;
namespace _20220901_1
{
class Program
{
static void Main(string[] args)
{
double[] points = { 88, 77, 75, 35, 95.5 };
double sum = 0;
double avg = 0;
foreach (double point in points)
{
sum = sum + point;
}
avg = sum / points.Length;
Console.WriteLine("总成绩为:" + sum);
Console.WriteLine("平均成绩为:" + avg);
}
}
}