.NET Core 循环与判断

本节内容循环与判断

循环

循环是一个在任何语言都是极为重要的语法,它可以用于很多东西,例如迭代数组等等。在C#中,语法层面的循环有:for , foreach ,while,do goto五种。循环你可以理解为当某条件满足时,重复的执行一段代码。接下来我们开始讲讲这五种循环的使用方法及优缺点。
for 循环

for循环

for循环可以说是最为常用的循环方式了,for循环时由以下部分组成:

  • 起始条件
  • 循环条件
  • 状态改变方式

这是大多数语言for循环的组成,例如以下例子

for(int i =0;i<5;i++)
{
    //表示从i=0开始,每次i+1,当i<5的时候跳出循环
    //并且每次循环开始都会判断循环条件是否满足,如果满足则会继续进行循环
}

非常简单,对吧。状态改变方式可以是多样的,你可以把它改成 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语句也称为开关语句,它根据与匹配表达式 匹配的模式,从候选列表中选择单个开关部分 进行执行。如果其中一个条件满足的时候,开关打开,运行其中的代码。每一个开关都应该有相应的跳出语句。特别的,之前讲到的goto就可以作为跳转的语句。例如:

//i是一个变量,不是表达式
switch(i)
{
    case 1:
        break;
    case 2:
        goto case 1;
    default:
        break;
}

三元表达式?

?表达式其实是一个只能判断两种结果的表达,也就是是能判断true和false,用法和 if 语句是一致的。直接看例子吧:

    int a =3;
    int b = 0;
    //这个意思是a==3为真的话,那么b=10,如果为假,b=5
    a ==3?b=10:b=5;

几点补充
循环的跳出:

循环跳出有三种方式,

  • break
  • continue
  • goto

break是指跳出整个循环,直接运行后面的代码,continue是指跳过本次循环,直接进入下一次循环条件判断,而goto就是指跳转到指定的标签位置。比较需要注意的就是break跳出和continue跳出的方式,本质区别就是一个为终止循环,一个是跳过本次。
运算的简写

这个本来应当在上一节进行讲解的,但是考虑到这个写法在循环中运用比较多,因此在本节进行讲解。
看以下例子

int i =0;
i+=2;//等价于i = i + 2
//请问下面这两种有何区别?
int b = ++i;
b = i++;
//如果运算符在前,例如++i,表示先进行i=i+1操作,然后进行赋值,i++表示先进行赋值,随后进行加法操作

练习题

请问下列两种判断,哪种效率高?为什么?

//Sample1:
if(a>5)
    //todo
else if(a==5)
    //todo
else
    //todo
//Sample 2:
if(a>5)
    //todo
if (a==5)
    //todo
else
    //todo
  • 利用switch语句,实现输入1,输出星期1,输入2,输出星期二

  • 请试着使用循环实现数组的访问、累加等操作

  • 试问该循环一共运行多少次

for(int i = 0;i<9;++i)
 for(int j =0;j<7;j++)

posted @ 2020-08-05 10:56  cool2feel  阅读(1127)  评论(0编辑  收藏  举报