100162742.htm

来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 316 行 · 第 1/5 页

HTM
316
字号
<p class="MsoNormal"><span><span lang="EN-US">do<sup>...</sup>while</span></span><span style="FONT-FAMILY: 宋体">循环是</span><span lang="EN-US">while</span><span style="FONT-FAMILY: 宋体">循环的后测试版本。它与</span><span lang="EN-US">C++</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">Java</span><span style="FONT-FAMILY: 宋体">中的</span><span lang="EN-US">do<sup>...</sup>while</span><span style="FONT-FAMILY: 宋体">循环相同,与</span><span lang="EN-US">VB</span><span style="FONT-FAMILY: 宋体">中的</span><span lang="EN-US">Loop<sup>...</sup>While</span><span style="FONT-FAMILY: 宋体">循环相同,该循环的测试条件要在执行完循环体之后执行。因此</span><span lang="EN-US">do<sup>...</sup>while</span><span style="FONT-FAMILY: 宋体">循环适合于至少执行一次循环体的情况:</span></p>
<p class="2" style="MARGIN: 8.15pt 0cm 0pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">bool condition;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">do </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; // this loop will at least execute once, even if Condition is false</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; MustBeCalledAtLeastOnce();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; condition = CheckCondition();</span></p>
<p class="2" style="MARGIN: 0cm 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">} while (condition);</span></p>
<h4 style="TEXT-INDENT: 21.45pt"><span lang="EN-US">4. foreach</span><span style="FONT-FAMILY: 黑体">循环</span></h4>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span><span lang="EN-US">foreach</span></span><span style="FONT-FAMILY: 宋体">循环是我们讨论的最后一种</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">循环机制。其他循环机制都是</span><span lang="EN-US">C</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">C++</span><span style="FONT-FAMILY: 宋体">的最早期版本,而</span><span lang="EN-US">foreach</span><span style="FONT-FAMILY: 宋体">语句是新增的循环机制</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">借用于</span><span lang="EN-US">VB)</span><span style="FONT-FAMILY: 宋体">,也是非常受欢迎的一种循环。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span lang="EN-US">foreach</span><span style="FONT-FAMILY: 宋体">循环可以迭代集合中的每个项目。现在不必考虑集合的概念,第</span><span lang="EN-US">9</span><span style="FONT-FAMILY: 宋体">章将介绍集合。现在,知道集合是一种包含其他对象的对象即可。从技术上看,要使用集合对象,它必须支持</span><span lang="EN-US">Ienumerable</span><span style="FONT-FAMILY: 宋体">接口。集合的例子有</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">数组、</span><span lang="EN-US">System.Collection</span><span style="FONT-FAMILY: 宋体">命名空间中的集合类,以及用户定义的集合类。从下面的代码中可以了解</span><span lang="EN-US">foreach</span><span style="FONT-FAMILY: 宋体">循环的语法,其中假定</span><span lang="EN-US">arrayOfInts</span><span style="FONT-FAMILY: 宋体">是一个整型数组:</span></p>
<p class="2" style="MARGIN: 8.15pt 0cm 0pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">foreach (int temp in arrayOfInts) </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; Console.WriteLine(temp);</span></p>
<p class="2" style="MARGIN: 0cm 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span style="FONT-FAMILY: 宋体">其中,</span><span lang="EN-US">foreach</span><span style="FONT-FAMILY: 宋体">循环一次迭代数组中的一个元素。对于每个元素,它把该元素的值放在</span><span lang="EN-US">int</span><span style="FONT-FAMILY: 宋体">型的变量</span><span lang="EN-US">temp</span><span style="FONT-FAMILY: 宋体">中,然后再执行一次循环迭代。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span style="FONT-FAMILY: 宋体">注意,不能改变集合中各项</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">上面的</span><span lang="EN-US">temp)</span><span style="FONT-FAMILY: 宋体">的值,所以下面的代码不会被编译:</span></p>
<p class="2" style="MARGIN: 8.15pt 0cm 0pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">foreach (int temp in arrayOfInts) </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; temp++;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; Console.WriteLine(temp);</span></p>
<p class="2" style="MARGIN: 0cm 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span style="FONT-FAMILY: 宋体">如果需要迭代集合中的各项,并改变它们的值,就应使用</span><span lang="EN-US">for</span><span style="FONT-FAMILY: 宋体">循环。</span></p>
<h3 style="MARGIN: 8.15pt 0cm"><span><span lang="EN-US">2.5.3 &nbsp;</span></span><span style="FONT-FAMILY: 黑体">跳转语句</span></h3>
<p class="MsoNormal"><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">提供了许多可以立即跳转到程序中另一行代码的语句,在此,先介绍</span><span lang="EN-US">goto</span><span style="FONT-FAMILY: 宋体">语句。</span></p>
<h4 style="TEXT-INDENT: 21.45pt"><span lang="EN-US">1. goto</span><span style="FONT-FAMILY: 黑体">语句</span></h4>
<p class="MsoNormal"><span></span><span lang="EN-US">goto</span><span style="FONT-FAMILY: 宋体">语句可以直接跳转到程序中用标签指定的另一行</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">标签是一个标识符,后跟一个冒号</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="2" style="MARGIN: 8.15pt 0cm 0pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">goto Label1;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; Console.WriteLine(&quot;This won't be executed&quot;);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">Label1:</span></p>
<p class="2" style="MARGIN: 0cm 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; Console.WriteLine(&quot;Continuing execution from here&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">goto</span><span style="FONT-FAMILY: 宋体">语句有两个限制。不能跳转到像</span><span lang="EN-US">for</span><span style="FONT-FAMILY: 宋体">循环这样的代码块中,也不能跳出类的范围,不能退出</span><span lang="EN-US">try...catch</span><span style="FONT-FAMILY: 宋体">块后面的</span><span lang="EN-US">finally</span><span style="FONT-FAMILY: 宋体">块</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">第</span><span lang="EN-US">11</span><span style="FONT-FAMILY: 宋体">章将介绍如何用</span><span lang="EN-US">try<sup>...</sup>catch<sup>...</sup>finally</span><span style="FONT-FAMILY: 宋体">块处理异常</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class="MsoNormal"><span lang="EN-US">goto</span><span style="FONT-FAMILY: 宋体">语句的名声不太好,在大多数情况下不允许使用它。一般情况下,使用它肯定不是面向对象编程的好方式。但是有一个地方使用它是相当方便的<span style="LETTER-SPACING: -0.5pt">&mdash;&mdash;</span>在</span><span lang="EN-US">switch</span><span style="FONT-FAMILY: 宋体">语句的</span><span lang="EN-US">case</span><span style="FONT-FAMILY: 宋体">子句之间跳转,这是因为</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">switch</span><span style="FONT-FAMILY: 宋体">语句在故障处理方面非常严格。前面介绍了其语法。</span></p>
<h4 style="TEXT-INDENT: 21.45pt"><span lang="EN-US">2. break</span><span style="FONT-FAMILY: 黑体">语句</span></h4>
<p class="MsoNormal"><span><span style="FONT-FAMILY: 宋体">前面简要提到过</span><span lang="EN-US">break</span></span><span style="FONT-FAMILY: 宋体">语句<span style="LETTER-SPACING: -0.5pt">&mdash;&mdash;</span>在</span><span lang="EN-US">switch</span><span style="FONT-FAMILY: 宋体">语句中使用它退出某个</span><span lang="EN-US">case</span><span style="FONT-FAMILY: 宋体">语句。实际上,</span><span lang="EN-US">break</span><span style="FONT-FAMILY: 宋体">也可以用于退出</span><span lang="EN-US">for</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">foreach</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">while</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US">do<sup>...</sup>while</span><span style="FONT-FAMILY: 宋体">循环,循环结束后,立即执行后面的语句。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">如果该语句放在嵌套的循环中,就执行最内部循环后面的语句。如果</span><span lang="EN-US">break</span><span style="FONT-FAMILY: 宋体">放在</span><span lang="EN-US">switch</span><span style="FONT-FAMILY: 宋体">语句或循环外部,就会产生编译时错误。</span></p>
<h4 style="TEXT-INDENT: 21.45pt"><span lang="EN-US">3. continue</span><span style="FONT-FAMILY: 黑体">语句</span></h4>
<p class="MsoNormal"><span><span lang="EN-US">continue</span></span><span style="FONT-FAMILY: 宋体">语句类似于</span><span lang="EN-US">break</span><span style="FONT-FAMILY: 宋体">,也必须用于</span><span lang="EN-US">for</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">foreach</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">while</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US"> do...while</span><span style="FONT-FAMILY: 宋体">循环中。但它只从循环的当前迭代中退出,然后在循环的下一次迭代开始重新执行,而不是退出循环。</span></p>
<h4 style="TEXT-INDENT: 21.45pt"><span lang="EN-US">4. return</span><span style="FONT-FAMILY: 黑体">语句</span></h4>
<p class="MsoNormal"><span><span lang="EN-US">return</span></span><span style="FONT-FAMILY: 宋体">语句用于退出类的方法,把控制返回方法的调用者,如果方法有返回类型,</span><span lang="EN-US">return</span><span style="FONT-FAMILY: 宋体">语句必须返回这个类型的值,如果方法没有返回类型,应使用没有表达式的</span><span lang="EN-US">return</span><span style="FONT-FAMILY: 宋体">语句。</span></p></div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100162741.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100162743.htm">下一页</a>
                </div>
                <div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
                    <div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
                        图书导读
                    </div>
                    <div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
                        <!--导读-->
                        <h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100162742.htm'><font color='red'>2.5  流控制</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100162739.htm'>2.2  第一个C#程序</a></div><div style='float:right;width:49%'>·<a href='100162740.htm'>2.3  变量</a></div><div style='float:left;width:49%'>·<a href='100162741.htm'>2.4  预定义数据类型</a></div><div style='float:right;width:49%'>·<a href='100162743.htm'>2.6  枚举</a></div><div style='float:left;width:49%'>·<a href='100162744.htm'>2.7  数组</a></div><div style='float:right;width:49%'>·<a href='100162745.htm'>2.8  命名空间</a></div></div>
                    </div>
                </div>
                </div>
        </div>
</body>
</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?