⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 15.1.htm

📁 This ECMA Standard specifies the form and establishes the interpretation of programs written in the
💻 HTM
字号:
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Hyperlinked ECMA C# Language Specification</title><meta name="author" content="Jon Jagger" /><link rel="stylesheet" href="ecma334.css"></link></head><body><div align="right"><em><a href="http://www.jaggersoft.com">Jon Jagger</a></em></div><div align="right"><a href="mailto:jon@jaggersoft.com">jon@jaggersoft.com</a></div><form method="get" action="http://search.atomz.com/search/"><input size="30" name="sp-q"></input><input type="submit" value="Search C# Spec"></input><input type="hidden" name="sp-a" value="sp10024177"></input><input type="hidden" name="sp-f" value="ISO-8859-1"></input></form><a href="toc.htm">Table of Contents</a> <a href="1.htm">1</a> <a href="2.htm">2</a> <a href="3.htm">3</a> <a href="4.htm">4</a> <a href="5.htm">5</a> <a href="6.htm">6</a> <a href="7.htm">7</a> <a href="8.htm">8</a> <a href="9.htm">9</a> <a href="10.htm">10</a> <a href="11.htm">11</a> <a href="12.htm">12</a> <a href="13.htm">13</a> <a href="14.htm">14</a> <a href="15.htm">15</a> <a href="16.htm">16</a> <a href="17.htm">17</a> <a href="18.htm">18</a> <a href="19.htm">19</a> <a href="20.htm">20</a> <a href="21.htm">21</a> <a href="22.htm">22</a> <a href="23.htm">23</a> <a href="24.htm">24</a> <a href="25.htm">25</a> <a href="notes.htm">Notes</a> <a href="HyperlinkedCSharpECMA.zip">Download</a><span class="ruler"></span><span class="heading">ECMA-334 C# Language Specification</span><span class="navigate"><a href="15.htm"><img src="previous.gif" alt="previous" border="0" /></a><a href="15.2.htm"><img src="next.gif" alt="next" border="0" /></a></span><span class="clause-depth"><a href="14.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="16.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number-link"><a href="15.htm">15</a></span><span class="clause-title-previous"> Statements</span></span><span class="clause-depth"><a href="15.1.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="15.2.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number">15.1</span><span class="clause-title"> End points and reachability</span></span><span class="locator">
     Paragraph 1</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P1S1"></a>Every statement has an end point.</span> <span class="sentence"><span class="sentence-number">2</span> <a name="P1S2"></a>In intuitive terms, the end point of a statement is the location that immediately follows the statement.</span> <span class="sentence"><span class="sentence-number">3</span> <a name="P1S3"></a>The execution rules for composite statements (statements that contain embedded statements) specify the action that is taken when control reaches the end point of an embedded statement.</span> <span class="sentence"><span class="sentence-number">4</span> <a name="P1S4"></a>For example, when control reaches the end point of a statement in a block, control is transferred to the next statement in the block.</span> </span><span class="locator">
     Paragraph 2</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P2S1"></a>If a statement can possibly be reached by execution, the statement is said to be reachable.</span> <span class="sentence"><span class="sentence-number">2</span> <a name="P2S2"></a>Conversely, if there is no possibility that a statement will be executed, the statement is said to be unreachable.</span> </span><span class="paragraph"><span class="example">[Example: In the example <pre class="code-example">
void F() {  
   Console.WriteLine("reachable");  
   goto Label;  
   Console.WriteLine("unreachable");  
   Label:  
   Console.WriteLine("reachable");  
}  
</pre>the second invocation of Console.WriteLine is unreachable because there is no possibility that the statement will be executed. end example]</span> </span><span class="locator">
     Paragraph 3</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P3S1"></a>A warning is reported if the compiler determines that a statement is unreachable.</span> <span class="sentence"><span class="sentence-number">2</span> <a name="P3S2"></a>It is specifically not an error for a statement to be unreachable.</span> </span><span class="paragraph"><span class="note">[Note: To determine whether a particular statement or end point is reachable, the compiler performs flow analysis according to the reachability rules defined for each statement. The flow analysis takes into account the values of constant expressions (<a href="14.15.htm">&#167;14.15</a>) that control the behavior of statements, but the possible values of non-constant expressions are not considered. In other words, for purposes of control flow analysis, a  non-constant expression of a given type is considered to have any possible value of that type. </span></span><span class="paragraph"><span class="note">In the example <pre class="code-example">
void F() {  
   const int i = 1;  
   if (i == 2) Console.WriteLine("unreachable");  
}  
</pre>the boolean expression of the if statement is a constant expression because both operands of the == operator are constants. As the constant expression is evaluated at compile-time, producing the value false, the Console.WriteLine invocation is considered unreachable. However, if i is changed to be a local variable <pre class="code-example">
void F() {  
   int i = 1;  
   if (i == 2) Console.WriteLine("reachable");  
}  
</pre>the Console.WriteLine invocation is considered reachable, even though, in reality, it will never be executed. end note]</span> </span><span class="locator">
     Paragraph 4</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P4S1"></a>The block of a function member is always considered reachable.</span> <span class="sentence"><span class="sentence-number">2</span> <a name="P4S2"></a>By successively evaluating the reachability rules of each statement in a block, the reachability of any given statement can be determined.</span> </span><span class="paragraph"><span class="example">[Example: In the example <pre class="code-example">
void F(int x) {  
   Console.WriteLine("start");  
   if (x &lt; 0) Console.WriteLine("negative");  
}  
</pre>the reachability of the second Console.WriteLine is determined as follows: <ul><li> The first Console.WriteLine expression statement is reachable because the block of the F method is reachable (<a href="15.2.htm">&#167;15.2</a>). </li><li> The end point of the first Console.WriteLine expression statement is reachable15.2 because that statement is reachable (<a href="15.6.htm">&#167;15.6</a> and <a href="15.2.htm">&#167;15.2</a>). </li><li> The if statement is reachable because the end point of the first Console.WriteLine expression statement is reachable (<a href="15.6.htm">&#167;15.6</a> and <a href="15.2.htm">&#167;15.2</a>). </li><li> The second Console.WriteLine expression statement is reachable because the boolean expression of the if statement does not have the constant value false. end example]</li></ul></span> </span><span class="locator">
     Paragraph 5</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P5S1"></a>There are two situations in which it is a compile-time error for the end point of a statement to be reachable: </span><ul><li><span class="sentence"><span class="sentence-number">2</span> <a name="P5S2"></a> Because the switch statement does not permit a switch section to "fall through" to the next switch section, it is a compile-time error for the end point of the statement list of a switch section to be reachable.</span> <span class="sentence"><span class="sentence-number">3</span> <a name="P5S3"></a>If this error occurs, it is typically an indication that a break statement is missing.</span> </li><li><span class="sentence"><span class="sentence-number">4</span> <a name="P5S4"></a> It is a compile-time error for the end point of the block of a function member that computes a value to be reachable.</span> <span class="sentence"><span class="sentence-number">5</span> <a name="P5S5"></a>If this error occurs, it typically is an indication that a return statement is missing.</span> </li></ul></span><span class="ruler"></span><table><tr><td><table align="left" bgcolor="navy"><tr bgcolor="navy"><td><font face="Arial,sans-serif" size="6" color="yellow"><strong>{ JSL }</strong></font></td></tr></table></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>Jagger Software Ltd</strong></font></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>Company # 4070126</strong></font></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>VAT # 762 5213 42</strong></font></td></tr></table><img src="valid-html401.png" align="left" height="31" width="88" alt="Valid HTML 4.01" /><img src="vcss.gif" align="left" height="31" width="88" alt="Valid CSS" /></body></html>

⌨️ 快捷键说明

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