📄 14.5.2.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="14.5.1.htm"><img src="previous.gif" alt="previous" border="0" /></a><a href="14.5.2.1.htm"><img src="next.gif" alt="next" border="0" /></a></span><span class="clause-depth"><a href="13.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="15.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number-link"><a href="14.htm">14</a></span><span class="clause-title-previous"> Expressions</span></span><span class="clause-depth"><a href="14.4.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="14.6.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number-link"><a href="14.5.htm">14.5</a></span><span class="clause-title-previous"> Primary expressions</span></span><span class="clause-depth"><a href="14.5.1.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="14.5.3.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number">14.5.2</span><span class="clause-title"> Simple names</span></span><span class="locator">
Paragraph 1</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P1S1"></a>A <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> consists of a single identifier.</span> <span class="grammar-production"><span class="name"><a name="simple-name"></a>simple-name</span> : <span class="rhs"><span class="non-terminal"><a href="9.4.2.htm#identifier">identifier</a></span> </span></span></span><span class="locator">
Paragraph 2</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P2S1"></a>A <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> is evaluated and classified as follows: </span><ul><li><span class="sentence"><span class="sentence-number">2</span> <a name="P2S2"></a> If the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> appears within a block and if the block's (or an enclosing block's) local variable declaration space (<a href="10.3.htm">§10.3</a>) contains a local variable or parameter with the given name, then the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> refers to that local variable or parameter and is classified as a variable.</span> </li><li><span class="sentence"><span class="sentence-number">3</span> <a name="P2S3"></a> Otherwise, for each type T, starting with the immediately enclosing class, struct, or enumeration declaration and continuing with each enclosing outer class or struct declaration (if any), if a member lookup of the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> in T produces a match: </span></li><ul><li><span class="sentence"><span class="sentence-number">4</span> <a name="P2S4"></a> If T is the immediately enclosing class or struct type and the lookup identifies one or more methods, the result is a method group with an associated instance expression of this.</span> </li><li><span class="sentence"><span class="sentence-number">5</span> <a name="P2S5"></a> If T is the immediately enclosing class or struct type, if the lookup identifies an instance member, and if the reference occurs within the block of an instance constructor, an instance method, or an instance accessor, the result is the same as a member access (<a href="14.5.4.htm">§14.5.4</a>) of the form this.E, where E is the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span>.</span> </li><li><span class="sentence"><span class="sentence-number">6</span> <a name="P2S6"></a> Otherwise, the result is the same as a member access (<a href="14.5.4.htm">§14.5.4</a>) of the form T.E, where E is the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span>.</span> <span class="sentence"><span class="sentence-number">7</span> <a name="P2S7"></a>In this case, it is a compile-time error for the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> to refer to an instance member.</span> </li></ul><li><span class="sentence"><span class="sentence-number">8</span> <a name="P2S8"></a> Otherwise, starting with the namespace in which the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> occurs, continuing with each enclosing namespace (if any), and ending with the global namespace, the following steps are evaluated until an entity is located: </span></li><ul><li><span class="sentence"><span class="sentence-number">9</span> <a name="P2S9"></a> If the namespace contains a namespace member with the given name, then the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> refers to that member and, depending on the member, is classified as a namespace or a type.</span> </li><li><span class="sentence"><span class="sentence-number">10</span> <a name="P2S10"></a> Otherwise, if the namespace has a corresponding namespace declaration enclosing the location where the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> occurs, then: </span></li><ul><li><span class="sentence"><span class="sentence-number">11</span> <a name="P2S11"></a> If the namespace declaration contains a <span class="non-terminal"><a href="16.3.1.htm#using-alias-directive">using-alias-directive</a></span> that associates the given name with an imported namespace or type, then the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> refers to that namespace or type.</span> </li><li><span class="sentence"><span class="sentence-number">12</span> <a name="P2S12"></a> Otherwise, if the namespaces imported by the <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span>s of the namespace declaration contain exactly one type with the given name, then the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> refers to that type.</span> </li><li><span class="sentence"><span class="sentence-number">13</span> <a name="P2S13"></a> Otherwise, if the namespaces imported by the <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span>s of the namespace declaration contain more than one type with the given name, then the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> is ambiguous and a compile-time error occurs.</span> </li></ul></ul><li><span class="sentence"><span class="sentence-number">14</span> <a name="P2S14"></a> Otherwise, the name given by the <span class="non-terminal"><a href="14.5.2.htm#simple-name">simple-name</a></span> is undefined and a compile-time error occurs.</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 + -