zoukankan      html  css  js  c++  java
  • .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++)
    

  • 相关阅读:
    在实体属性上通过注解格式化日期
    @Validated和@Valid区别:Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@Validated
    两种根据关键字查询的方法SQL
    excel批量导入数据
    下载excel模板
    上传人员照片
    身份证校验类
    把字符串参数分割成数组 传入SQL foreach遍历查询
    使用Hibernate-Validator优雅的校验参数
    如何使用Graphics2D在一张图片上画线(包括箭头)
  • 原文地址:https://www.cnblogs.com/cool2feel/p/13438484.html
Copyright © 2011-2022 走看看