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

📄 16.3.2.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="16.3.1.htm"><img src="previous.gif" alt="previous" border="0" /></a><a href="16.4.htm"><img src="next.gif" alt="next" border="0" /></a></span><span class="clause-depth"><a href="15.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="17.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number-link"><a href="16.htm">16</a></span><span class="clause-title-previous"> Namespaces</span></span><span class="clause-depth"><a href="16.2.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="16.4.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number-link"><a href="16.3.htm">16.3</a></span><span class="clause-title-previous"> Using directives</span></span><span class="clause-depth"><a href="16.3.1.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="16.3.2.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number">16.3.2</span><span class="clause-title"> Using namespace directives</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="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span> imports the types contained in a namespace into the immediately enclosing compilation unit or namespace body, enabling the identifier of each type to be used without qualification.</span> <span class="grammar-production"><span class="name"><a name="using-namespace-directive"></a>using-namespace-directive</span> : <span class="rhs"><span class="keyword">using</span> <span class="non-terminal"><a href="10.8.htm#namespace-name">namespace-name</a></span> <span class="terminal">;</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>Within member declarations in a compilation unit or namespace body that contains a  <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span>, the types contained in the given namespace can be referenced directly.</span> <span class="example">[Example: For example: <pre class="code-example">
namespace N1.N2  
{  
   class A {}  
}  
namespace N3  
{  
   using N1.N2;  
   class B: A {}  
}  
</pre></span></span><span class="paragraph"><span class="example">Above, within member declarations in the N3 namespace, the type members of N1.N2 are directly available, and thus class N3.B derives from class N1.N2.A. 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 <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span> imports the types contained in the given namespace, but specifically does not import nested namespaces.</span> <span class="example">[Example: In the example <pre class="code-example">
namespace N1.N2  
{  
   class A {}  
}  
namespace N3  
{  
   using N1;  
   class B: N2.A {}    // Error, N2 unknown  
}  
</pre>the <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span> imports the types contained in N1, but not the namespaces nested in N1. Thus, the reference to N2.A in the declaration of B results in a compile-time error because no members named N2 are in scope. end example]</span> </span><span class="locator">
     Paragraph 4</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P4S1"></a>Unlike a <span class="non-terminal"><a href="16.3.1.htm#using-alias-directive">using-alias-directive</a></span>, a <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span> may import types whose identifiers are already defined within the enclosing compilation unit or namespace body.</span> <span class="sentence"><span class="sentence-number">2</span> <a name="P4S2"></a>In effect, names imported by a  <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span> are hidden by similarly named members in the enclosing compilation unit or namespace body.</span> <span class="example">[Example: For example: <pre class="code-example">
namespace N1.N2  
{  
   class A {}  
   class B {}  
}  
namespace N3  
{  
   using N1.N2;  
   class A {}  
}  
</pre></span></span><span class="paragraph"><span class="example">Here, within member declarations in the N3 namespace, A refers to N3.A rather than N1.N2.A. end example]</span> </span><span class="locator">
     Paragraph 5</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P5S1"></a>When more than one namespace imported by <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span>s in the same compilation unit or namespace body contain types by the same name, references to that name are considered ambiguous.</span> </span><span class="paragraph"><span class="example">[Example: In the example <pre class="code-example">
namespace N1  
{  
   class A {}  
}  
namespace N2  
{  
   class A {}  
}  
namespace N3  
{  
   using N1;  
   using N2;  
   class B: A {}     // Error, A is ambiguous  
}  
</pre>both N1 and N2 contain a member A, and because N3 imports both, referencing A in N3 is a compile-time error. end example]</span> <span class="sentence"><span class="sentence-number">2</span> <a name="P5S2"></a>In this situation, the conflict can be resolved either through qualification of references to A, or by introducing a <span class="non-terminal"><a href="16.3.1.htm#using-alias-directive">using-alias-directive</a></span> that picks a particular A.</span> <span class="example">[Example: For example: <pre class="code-example">
namespace N3  
{  
   using N1;  
   using N2;  
   using A = N1.A;  
   class B: A {}     // A means N1.A  
}  
</pre>end example]</span> </span><span class="locator">
     Paragraph 6</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P6S1"></a>Like a <span class="non-terminal"><a href="16.3.1.htm#using-alias-directive">using-alias-directive</a></span>, a <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span> does not contribute any new members to the underlying declaration space of the compilation unit or namespace, but, rather, affects only the compilation unit or namespace body in which it appears.</span> </span><span class="locator">
     Paragraph 7</span><span class="paragraph"><span class="sentence"><span class="sentence-number">1</span> <a name="P7S1"></a>The <span class="non-terminal"><a href="10.8.htm#namespace-name">namespace-name</a></span> referenced by a <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span> is resolved in the same way as the <span class="non-terminal"><a href="10.8.htm#namespace-or-type-name">namespace-or-type-name</a></span> referenced by a <span class="non-terminal"><a href="16.3.1.htm#using-alias-directive">using-alias-directive</a></span>.</span> <span class="sentence"><span class="sentence-number">2</span> <a name="P7S2"></a>Thus, <span class="non-terminal"><a href="16.3.2.htm#using-namespace-directive">using-namespace-directive</a></span>s in the same compilation unit or namespace body do not affect each other and can be written in any order.</span> </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 + -