100162745.htm

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

HTM
148
字号
<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; class NamespaceExample</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Code for the class here...</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; }</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></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span style="FONT-FAMILY: 宋体">命名空间与程序集无关。同一个程序集中可以有不同的命名空间,也可以在不同的程序集中定义同一个命名空间中的类型。</span></p>
<h3 style="MARGIN: 8.15pt 0cm"><span lang="EN-US">2.8.1 &nbsp;using</span><span style="FONT-FAMILY: 黑体">语句</span></h3>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span><span style="FONT-FAMILY: 宋体">显然,命名空间相当长,键入起来很繁琐,用这种方式指定某个特定的类也是不必要的。如本章开头所述,</span><span lang="EN-US">C#</span></span><span style="FONT-FAMILY: 宋体">允许简写类的全名。为此,要在文件的顶部列出类的命名空间,前面加上</span><span lang="EN-US">using</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">using System;</span></p>
<p class="2" style="MARGIN: 0cm 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">using Wrox.ProCSharp;</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span style="FONT-FAMILY: 宋体">如前所述,所有的</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">源代码都以语句</span><span lang="EN-US">using System;</span><span style="FONT-FAMILY: 宋体">开头,这仅是因为</span><span lang="EN-US">Microsoft</span><span style="FONT-FAMILY: 宋体">提供的许多有用的类都包含在</span><span lang="EN-US">System</span><span style="FONT-FAMILY: 宋体">命名空间中。</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 17pt"><span style="FONT-FAMILY: 宋体">如果</span><span lang="EN-US">using</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><span lang="EN-US">NamespaceExample</span><span style="FONT-FAMILY: 宋体">同时存在于</span><span lang="EN-US">Wrox.ProCSharp.Basics</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US" style="LETTER-SPACING: 0.2pt">Wrox.ProCSharp.OOP</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt">命名空间中,如果要在命名空间</span><span lang="EN-US">Wrox.ProCSharp</span><span style="FONT-FAMILY: 宋体">中创建一个类</span><span lang="EN-US">Test</span><span style="FONT-FAMILY: 宋体">,并在该类中实例化一个</span><span lang="EN-US">NamespaceExample</span><span style="FONT-FAMILY: 宋体">类,<span style="LETTER-SPACING: 0.2pt">就需要指定使用哪个类:</span></span></p>
<p class="2" style="MARGIN: 8.15pt 0cm 0pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">using Wrox.ProCSharp;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">class Test</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; public static int Main()</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Basics.NamespaceExample nSEx = new Basics.NamespaceExample();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //do something with the nSEx variable</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; }</span></p>
<p class="2" style="MARGIN: 0cm 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">}&nbsp;&nbsp; </span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">因为</span><span lang="EN-US">using</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">#include</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">using</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></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">公司应花一定的时间开发一种命名空间模式,这样其开发人员才能快速定位他们所需要的功能,而且公司内部使用的类名也不会与外部的类库相冲突。本章后面将介绍建立命名空间模式的规则和其他命名约定。</span></p>
<h3 style="MARGIN: 8.15pt 0cm"><span lang="EN-US">2.8.2 &nbsp;</span><span style="FONT-FAMILY: 黑体">命名空间的别名</span></h3>
<p class="MsoNormal"><span><span lang="EN-US">using</span></span><span style="FONT-FAMILY: 宋体">关键字的另一个用途是给类和命名空间指定别名。如果命名空间的名称非常长,又要在代码中使用多次,但不希望该命名空间的名称包含在</span><span lang="EN-US">using</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="a6" style="MARGIN: 8.15pt 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">using alias = NamespaceName;</span></p>
<p class="MsoNormal"><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><span lang="EN-US">Wrox.ProCSharp.Basics</span><span style="FONT-FAMILY: 宋体">命名空间指定别名</span><span lang="EN-US">Introduction</span><span style="FONT-FAMILY: 宋体">,并使用这个别名实例化了一个</span><span lang="EN-US">NamespaceExample</span><span style="FONT-FAMILY: 宋体">对象,这个对象是在该命名空间中定义的。它有一个方法</span><span lang="EN-US">GetNamespace()</span><span style="FONT-FAMILY: 宋体">,该方法调用每个类都有的</span><span lang="EN-US">GetType()</span><span style="FONT-FAMILY: 宋体">方法,以访问表示类的类型的</span><span lang="EN-US">Type</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">using System;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">using Introduction = Wrox.ProCSharp.Basics;</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">class Test</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">{</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; public static int Main()</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; {</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Introduction.NamespaceExample NSEx =</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Introduction.NamespaceExample();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(NSEx.GetNamespace());</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; }</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">}&nbsp;&nbsp; </span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">namespace Wrox.ProCSharp.Basics</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; class NamespaceExample</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string GetNamespace()</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.GetType().Namespace;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; }</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">}</span></p></div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100162744.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100162746.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='100162745.htm'><font color='red'>2.8  命名空间</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100162742.htm'>2.5  流控制</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='100162746.htm'>2.9  Main()方法</a></div><div style='float:left;width:49%'>·<a href='100162747.htm'>2.10  有关编译C#文件的更多内容</a></div><div style='float:right;width:49%'>·<a href='100162748.htm'>2.11  控制台I/O</a></div></div>
                    </div>
                </div>
                </div>
        </div>
</body>
</html>

⌨️ 快捷键说明

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