循环
循环是一个在任何语言都是极为重要的语法,它可以用于很多东西,例如迭代数组等等。在C#中,语法层面的循环有:for , foreach ,while,do goto五种。循环你可以理解为当某条件满足时,重复的执行一段代码。
for 循环
for循环可以说是最为常用的循环方式了,for循环时由以下部分组成:
起始条件(int i=0),循环条件(i<10),状态改变方式(i++)
for(int i =0;i<10;i++)
{
//表示从i=0开始,每次i+1,当i<10的时候跳出循环
//并且每次循环开始都会判断循环条件是否满足,如果满足则会继续进行循环
}
非常简单,对吧。状态改变方式可以是多样的,你可以把它改成 i = i+2 等等各种方式。
foreach 循环
foreach循环在其他语言中有着不同的实现方式,但是在C#中,foreach是遍历每一个元素并返回,而for循环你可以简单的理解位循环 i 当 i 满足时跳出。不过foreach循环并不是每一个有集合或者数组属性的东西都可以循环,使用foreach循环的前提就是该元素集合必须继承IEnumerable接口。因为foreach在遍历元素的时候,第一次遍历会调用GetEnumerator()方法将第一个元素赋值给循环的临时变量,之后每次调用MoveNext()方法,直到循环结束。
foreach(var a in list)
{
/*
第一次时调用GetEnumerator()将第一个变量赋值给a,然后调用MoveNext()将后续变量赋值给a
*/
}
while 循环
while循环是单条件循环,也是一个常用的循环,在指定的布尔表达式的计算结果为 true 时,while语句会执行一条语句或一个语句块。 由于在每次执行循环之前都会计算此表达式,所以while循环会执行零次或多次。
while(expression)
{
//当expression为真时,才会继续循环。
}
do 循环
do循环也被称为 do......while 循环,它的原理和while循环是一样的,都是当表达式为真的时候进行,但是不同于while的是,如果表达式一开始就为假,while循环不会执行循环体内的代码,而do循环会至少执行一次(通常是一次,除非你在循环体内对表达式结果进行了修改)。
do
{
//todo
}while(expression)
goto 循环
goto不能称之为循环,但是它确实可以实现类似于循环的功能。但是它也可以作为跳出循环的一种方式,不过在判断语句中也会有它的用武之地。
lb:
//todo 这表示在lb到goto lb之间循环
goto lb;
while(true)
{
//作为跳出循环的方式
goto finish;
}
finish:
//todo
判断
在C#中实现判断的方式通常有三种方式
- if else if else语句
- switch 语句
- 三元表达式?
if 语句
if语句基于布尔表达式的值来识别运行哪个语句,需要注意的是,if判断结果如果为真的话,后面的else if和else都不再进行判断。例如:
if(condition)
{
if(condition3)
{
//嵌套判断,满足上一级条件又满足下一级条件
}
}
else if(condition1)
{
}
else if(condition2)
{
}
else
{
}
若condition验证为真,后面的condition都不再进行判断。if语句总体来说还是非常简单的
switch 语句
switch语句也称为开关语句,它根据与匹配表达式 匹配的模式,从候选列表中选择单个开关部分 进行执行。如果其中一个条件满足的时候,开关打开,运行其中的代码。每一个开关都应该有相应的跳出语句。
//i是一个变量,不是表达式
switch(i)
{
case 1:
break;
case 2:
break;
default:
break;
}
三元表达式?
int a =3;
int b = 0;
//这个意思是a==3为真的话,那么b=10,如果为假,b=5
a ==3?b=10:b=5;
几点补充
循环的跳出:
循环跳出有三种方式,
- break :是指跳出整个循环,直接运行后面的代码(终止循环)
- continue:是指跳过本次循环,直接进入下一次循环条件判断(跳过本次循环,进行下一次循环)
- goto:goto就是指跳转到指定的标签位置
运算的简写
int i =0;
i+=2;//等价于i = i + 2
//请问下面这两种有何区别?
int b = ++i; //表示先进行i=i+1操作,然后进行赋值
b = i++; //i++表示先进行赋值,随后进行加法操作