zoukankan      html  css  js  c++  java
  • C#编程(五)----流程控制

    流控制(控制语句)

    程序的代码不是按照从上往下执行的,是按照控制语句执行的.

    条件语句

    C#中有两个控制语句:if语句还有switch语句

    1.if语句   C#中继承了C和C++中的if语句,语法直观.不做介绍.在if语句中特别注意的是,C#中使用”==”对变量进行比较,使用”=”用于赋值.if语句的表达式必须等于布尔值.不给直接测试整数(如从函数中返回的值).

    static void Main(string[] args)

            {

                if (DoSomething() != 0)//这是错误的

                {

                    //DoSomething

                }

                else

                {

                    //DoSomething

                }

            }

            int DoSomething()

            {

                return 1;

            }

    2.switch case语句

    string str=Console.ReadLine();

                switch (str)

                {

                    case "aaa":

                        Console.WriteLine("aaa");

                        break;

                    case "bbb":

                        Console.WriteLine("bbb");

                        break;

                    case "ccc":

                        Console.WriteLine("ccc");

                        break;

                }

    switch case语句中case的值必须是常量表达式,不能是变量.

    C,C++中的switch没有C#中的安全,C#中禁止了所有case中的失败条件.如果激活了快中靠前一条case自居,后面的case子句将不会执行,除非使用共同语句特变表明也要激活后面的case子句,大部分编译器会把没有break语句的case子句标记为错误.

    但是有一种例外情况.如果一条case子句为空,就可以从这个case跳到下一个case.例如

     string str=Console.ReadLine();

                switch (str)//表示str等于aaa和等于bbb和等于ccc的情况一样,都是输出ccc

                {

                    case "aaa":                   

                    case "bbb":                   

                    case "ccc":

                        Console.WriteLine("ccc");

                        break;

                }

    在switch中default的放置位置可以是任意的,甚至可以把default放在最前面!因此,任何两条case都不能相同,所以不能这样编写:

     string str1="syx";

                string str2="syx1";

                string str=Console.ReadLine();

                switch(str)

                {

                case str1://必须是常量表达式,

                case "syx"://不能出现相同的

                case "syx":

                Console.WriteLine("something");

                break;

                }

    与C++不同的是,C#中可以把字符串作为用作测试的变量,通过上面的例子就可以看出.

    循环语句

    C#中有四种不同的循环机制(for,while,do...while,foreach).

    for(初始值;判断条件;表达式)

    for是所谓的与测试循环,因为循环条件实在执行语句钱计算的,如果条件为假,循环语句不执行.

    for适合一个语句或语句块重复执行预定的次数.

    for(int i=0;i<100;++i)

    {

    Console.WriteLine(i);

    }

    执行过程是这样:生命一个int类型的变量i,初始化为0,用做循环计数器,接着测试他是否小于100,如果小于100,执行循环中的代码(如果大于100就不执行循环),接着给计数器加1,

    ->判断->执行循环,直到不满足判断条件为止.

    这里又引出了C#给一个变量加1,可以使用i++,也可以使用i=i+1;

    其实最常见的还是for循环嵌套.

     for (int i = 0; i < 100; i+=10)

                {

                    for (int j = 0; j < i+10; j++)

                    {

                        Console.Write(" "+j);

                    }

                    Console.WriteLine();

                }

                Console.ReadKey();

    需要说明的是尽管j是一个整数,但它会自动转换为字符串,以便进行连接.

    2.while循环

    和for循环一样,while循环也是一个需测试循环,语法类似for,但是while循环中只有一个表达式.

    while(cindition)

    {

    statement(s);

    }

    while循环适合刚开始可能并不知道执行一定的次数,但是在某次的贴袋中,while循环体重的语句把布尔标志设置为false,结束循环.

    bool condition =false

    while(!condition)

    {

    DoSomething();

    condition=CheckCondition();

    }

    3.do..while循环

    该循环时时乐循环的后测试版本,该循环的测试条件要在执行完循环体之后执行,也就是说do...while循环至少要执行一次循环语句.

    4.foreach循环

    foreach循环可以迭代集合中的每一项,暂时不必了解集合的概念.

      int[] arr = new int[20];

                foreach (int item in arr)

                {

                    Console.WriteLine(item);

                }

                Console.ReadKey();

    foreach循环每次迭代数组中的一个元素,把每个元素的值放在int类型的变量item中,因为item是代表集合中的元素,而不是集合的下标,所以不能改变.

    foreach (int item in arr)

                {

    item++;//这是不对的,是不会通过编译的.

                    Console.WriteLine(item);

                }

    如果要迭代集合中的各项,并改变他们的值,应该使用for循环.

    跳转语句

    1.break语句

    前面说的break用来退出某个case语句,实际上,break主要是用来推出循环的,该鱼聚会是控制流执行循环后面的语句.

    如果该语句放在嵌套的循环中,则break的作用是退出他所临最近的大括号.例如:

     for (int i = 0; i < 100; i++)

                {

                    for (int j = 0; j < 100; j++)

                    {

                        Console.WriteLine("j= "+j);

                        break;//退出含有j的for,执行含有i的for

                    }

                    Console.WriteLine("i= "+i);

                }

                Console.ReadKey();

    2.continue语句

    continue语句类似于break,也必须用在循环中,但是continue的作用是退出循环的当前迭代,执行循环的下一次迭代.

    for (int i = 0; i < 100; i++)

                {

                    Console.WriteLine("前面的i= " + i);

                    continue;

                    Console.WriteLine("后面的i= " + i);

                }

                Console.ReadKey();

    程序的结果是输出前面的i,后面的i不是输出,在新的编译器上,还会提述Console.WriteLine("后面的i= " + i);该行代码无效,或者执行不到,也就是无效的费代码.

    3.return语句

    return语句用于退出类的方法,把控制权返回方法的调用者,如果方法又返回类型,return语句必须返回这个类型的值;如果方法的返回值类型是void,则应该没有return语句.

  • 相关阅读:
    axios的数据请求方式及跨域
    vuex 的介绍
    返回顶部的过渡式写法
    数据结构和算法——二叉树
    RecyclerView的刷新和加载更多
    希尔排序小结
    选择排序小结
    插入排序小结
    冒泡、快速排序小结
    数据结构和算法——递归算法
  • 原文地址:https://www.cnblogs.com/android-blogs/p/6428806.html
Copyright © 2011-2022 走看看