官术网_书友最值得收藏!

3.3 跳轉(zhuǎn)語句的應(yīng)用

跳轉(zhuǎn)語句主要用于無條件地轉(zhuǎn)移控制到某個(gè)位置,這個(gè)位置就稱為跳轉(zhuǎn)語句的目標(biāo)。跳轉(zhuǎn)語句主要包括break語句、continue語句、return語句和goto語句4種。下面將對這幾種跳轉(zhuǎn)語句做簡單的介紹。

3.3.1 break跳轉(zhuǎn)語句

在之前講解的switch語句中用到了break語句,break break語句不僅可以使用在此,還可以把它用于for、while、do…while以及foreach循環(huán)語句中。break語句使程序跳出當(dāng)前循環(huán),并繼續(xù)執(zhí)行循環(huán)之后的代碼。當(dāng)break出現(xiàn)在嵌套循環(huán)語句中時(shí),break語句只能出現(xiàn)在最里層的語句中。如果要穿越多個(gè)嵌套語句,則必須使用goto語句。

下面通過一個(gè)小例子來講解下break語句的用法。

例3-6:break語句的使用(ConsoleBreak)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleBreak
    {
        class Program
        {
            static void Main(string[] args)
            {
                int num = 0;
                string[] strs = new string[] { "LiLei", "HanMeimei", "LinTao", 
                "Kate", "Uncle Wang", "Jim", "Tom", "Lily", "Lucy", "Ann", 
                "polly" };
                foreach (string s in strs)
                {
                    num++;
                    if (s == "Tom")
                    {
                        Console.WriteLine("找到Tom了,他在編號" + num + "的位置!");
                        break;
                    }
                    Console.WriteLine("位置" + num + "處沒有Tom");
                }
    
                Console.ReadLine();
            }
        }
    }

運(yùn)行結(jié)果如圖3-14所示。

圖3-14 break語句的使用

此例使用foreach語句遍歷數(shù)組,查找“Tom”所在的位置,找到后使用break語句結(jié)束循環(huán)。

3.3.2 continue跳轉(zhuǎn)語句

continue語句與break語句類似,必須出現(xiàn)在for、while、do…while和foreach循環(huán)語句中,continue語句的作用是退出當(dāng)前循環(huán)結(jié)構(gòu)的本次循環(huán),并開始執(zhí)行下一次循環(huán),而不是退出當(dāng)前循環(huán)結(jié)構(gòu)。當(dāng)嵌套循環(huán)語句存在時(shí),continue語句只能使直接包含它的循環(huán)語句開始一次新的循環(huán)。

下面通過一個(gè)小例子來講解下continue語句的用法。

例3-7:continue語句的使用(ConsoleContinue)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleContinue
    {
        class Program
        {
            static void Main(string[] args)
            {
                for (int i = 1; i <= 10; i++)
                {
                    if (i % 2 != 0)
                        continue;
                    Console.WriteLine(i);
                }
                Console.ReadLine();
            }
        }
    } 

運(yùn)行結(jié)果如圖3-15所示。

圖3-15 continue語句的使用

此例使用for循環(huán)語句,對循環(huán)變量i取余,如果余數(shù)不為0,則continue語句就終止當(dāng)前循環(huán),繼續(xù)下一次循環(huán),所以只輸出2、4、6、8、10。

3.3.3 return跳轉(zhuǎn)語句

return語句終止它出現(xiàn)在其中的方法的執(zhí)行并將控制返回給調(diào)用方法。它還可以返回一個(gè)可選值。如果方法為void類型,則可以省略return語句。

如果return語句位于try塊中,則將在控制流返回到調(diào)用方法之前執(zhí)行finally塊(如果存在)。

下面通過一個(gè)小例子來講解下return語句的用法。

例3-8:return語句的使用(ConsoleReturn)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleReturn
    {
        class Program
        {
            static void Main(string[] args)
            {
                while (true)
                {
                    string num1, num2, choose;
                    Console.WriteLine("請輸入一個(gè)數(shù)字(輸入“e”退出程序)");
                    num1 = Console.ReadLine();
                    if (num1 == "e")
                    {
                        break;
                    }
                    Console.WriteLine("請輸入另一個(gè)數(shù)字");
                    num2 = Console.ReadLine();
                    Console.WriteLine("請選擇要進(jìn)行的運(yùn)算:");
                    Console.WriteLine("1.+\t2.-\t3.*\t4./");
                    choose = Console.ReadLine();
                    Console.WriteLine("計(jì)算結(jié)果為:{0}", Operational(Convert. 
                    ToDouble(num1), Convert.ToDouble(num2), choose));
                    Console.WriteLine("——————————————");
                }
                Console.WriteLine("您已經(jīng)成功退出,再見!");
                Console.ReadLine();
            }
    
            public static string Operational(double num1, double num2, string 
            choose)
            {
                switch (choose)
                {
                    case "1":
                        return (num1 + num2).ToString();
                    case "2":
                        return (num1 - num2).ToString();
                    case "3":
                        return (num1 * num2).ToString();
                    case "4":
                        return (num1 / num2).ToString();
                    default:
                        return "輸入有誤!";
                }
            }
        }
    }

運(yùn)行結(jié)果如圖3-16所示。

圖3-16 return語句的使用

此實(shí)例實(shí)現(xiàn)了一個(gè)簡易的加減乘除計(jì)算器的效果,代碼中根據(jù)輸入的choose值判斷做何種運(yùn)算,switch語句的每個(gè)case中使用return語句直接將轉(zhuǎn)為string類型后的計(jì)算結(jié)果返回了函數(shù)調(diào)用處,這又引出了case中的一種特殊情況——當(dāng)一個(gè)case中需要return語句時(shí),break語句要省略,因?yàn)閮烧吖泊鏇]有任何意義(位于后面的一個(gè)語句將永遠(yuǎn)無法被程序執(zhí)行到)。關(guān)于函數(shù)的相關(guān)知識將在后續(xù)章節(jié)進(jìn)行講解,此處不做具體講解。注意此實(shí)例未進(jìn)行異常處理,旨在講解return的用法。

3.3.4 goto語句

goto語句用于將控制轉(zhuǎn)移到事先定義的標(biāo)簽標(biāo)記的語句。goto語句可以應(yīng)用于switch語句中的case標(biāo)簽和default標(biāo)簽以及事先定義的標(biāo)記語句所聲明的標(biāo)簽。goto語句的三種形式及介紹如下。

    goto case表達(dá)式:

goto case語句的目標(biāo)為它所在switch語句中的某個(gè)語句列表。

    goto default:

goto default語句的目標(biāo)是它所在的switch語句的default標(biāo)簽。

    goto 【標(biāo)簽】:

goto【標(biāo)簽】語句的目標(biāo)是具有給定標(biāo)簽的標(biāo)記語句。此用法可用于跳出多層嵌套循環(huán)語句。但是,不能使用goto語句從外部進(jìn)入循環(huán)。

下面通過一個(gè)小例子來講解下goto語句的用法。

例3-9:goto語句的使用(ConsoleGoto)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleGoto
    {
        class Program
        {
            static void Main(string[] args)
            {
                while (true)
                {
                    Console.WriteLine("請輸入任意字符,(輸入"e"退出)");
                    string str = Console.ReadLine();
                    if (str == "e")
                        goto exit;
                    Console.WriteLine("您輸入了" + str);
                }
            exit:
                Console.WriteLine("您已經(jīng)成功退出循環(huán)!");
                Console.ReadLine();
            }
        }
    } 

運(yùn)行結(jié)果如圖3-17所示。

圖3-17 goto語句的使用

此實(shí)例演示了goto【標(biāo)簽】的用法,當(dāng)輸出“e”時(shí),程序直接跳出了while循環(huán),并在定義為exit的標(biāo)簽處繼續(xù)執(zhí)行程序。

goto在使用時(shí)存在一些爭議,有人建議避免使用它,因?yàn)樗鼤騺y程序代碼的執(zhí)行順序,使程序代碼的可維護(hù)性較差,所以應(yīng)盡量避免使用goto語句。

3.3.5 各跳轉(zhuǎn)語句的區(qū)別

(1)break語句:跳出(終止)循環(huán)。

(2)continue語句:跳出(終止)當(dāng)前的循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。

(3)return語句:跳出循環(huán)以及其包含的函數(shù)。

(4)goto語句:可以跳出循環(huán)到已標(biāo)記好的位置上。

主站蜘蛛池模板: 高阳县| 沅陵县| 济宁市| 亚东县| 淮南市| 武宁县| 泰州市| 平潭县| 富蕴县| 大邑县| 惠水县| 合水县| 阿尔山市| 汾西县| 东阳市| 如东县| 广汉市| 阿尔山市| 上林县| 治县。| 贞丰县| 海南省| 桑日县| 水城县| 蒙山县| 元阳县| 温泉县| 东源县| 五台县| 习水县| 桓台县| 晋中市| 怀集县| 杨浦区| 得荣县| 无锡市| 诏安县| 兴海县| 宜城市| 宿松县| 巍山|