欢迎来到天天文库
浏览记录
ID:42722574
大小:486.63 KB
页数:32页
时间:2019-09-21
《轻松学C#之命名空间、预处理器和程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第14章命名空间、预处理器和程序集为了方便开发者开发复杂的大型程序,C#提供各种机制来提高开发效率和编译效率。常用的机制包括命名空间、预处理和程序集。其中,命名空间解决了资源命名问题。预处理器可以有效提升编译效率。程序集则是C#编程的基本组成内容。本章将详细介绍这3个C#功能:命名空间、预处理器和程序集。14.1命名空间命名空间定义了一个声明区域,它提供了将一组名称与另一组名称进行区分的方法。一个命名空间中声明的名称不会与另一个命名空间中声明的相同名称冲突。所有的C#程序都会以某种方式使用命名空间。在前面的章节中,程序只简单地使用了全局命名空间。但是在实际情况中,许多程序都需要创建
2、自己的命名空间或者与其他的命名空间进行交互。本章将详细介绍这些内容。14.1.1命名空间的声明使用namespace关键字可以声明一个命名空间,其通用形式如下图所示。其中,name是命名空间的名称。命名空间声明定义了一个作用域,定义在命名空间中的所有元素都限制在该命名空间的作用域内。命名空间的成员可以是用户声明的类、结构、委托、枚举和接口,也可以是另一个命名空间。【示例14-1】下面代码创建了一个名为Coun的命名空间,它把一个实现简单倒计时计数器功能的CounDow类限制在该命名空间中。第一,由于CounDow类是在Coun命名空间中声明的,因此在创建CounDow对象时,必须使
3、用Coun限定CounDow类。代码如下:Coun.CounDowcd1=newCoun.CounDow(10);Coun.CounDowcd2=newCoun.CounDow(15);第二,一旦创建Coun类型的对象,就不需要使用命名空间进一步限定该变量或它的任何成员。因此,可以直接调用cd1.Cont()方法而不用使用命名空间限定。代码如下:i=cd1.Cont();i=cd2.Cont();14.1.2命名空间的作用命名空间的作用是,在它内部声明的名称不会与在它外部声明的相同名称冲突。【示例14-2】以下程序定义了两个命名空间。其中一个命名空间是Coun,另一个是Coun2。
4、它们都包含CounDow类,但是因为这两个类包含在不同的命名空间中,所以不会产生冲突。虽然,Coun命名空间内部的CounDow类与Coun2命名空间中的CounDow类名称相同,但是这两个类在不同的命名空间中是相互独立的,不会产生冲突。注意:这里只能是不同名称命名空间中的相同成员。如果是相同名称命名空间中的相同成员,将不能避免冲突。14.1.3using指令如果程序需要频繁地引用某个命名空间中的成员,那么每次都指定它的命名空间就会很麻烦。使用using指令可以解决这个问题。必须在每个文件的开头指定using指令,它位于所有其他的声明之前,或者位于命名空间主体的开始位置。此外,us
5、ing指令也可以用来引入用户自定义的命名空间。using指令有两种形式,第一种形式如下:usingname;其中,name指定要访问的命名空间名称。引入命名空间后,就会引入所有定义在该命名空间中的成员,并且能够不加限定地使用它们。【示例14-3】下面的程序重写了前面的计数器示例,介绍如何使用using指令引入自定义的命名空间。14.1.4using指令的另一种形式using指令的另一种形式可以为类型或命名空间创建别名,代码如下:usingabc=name;其中,abc是name所指定的类型或命名空间的别名。一旦创建别名,就可以使用别名代替原始的名称。【示例14-4】下面的程序还是重
6、写前面的计数器示例,介绍如何使用using指令的另一种形式引入自定义的命名空间。14.1.5命名空间的合成一个命名空间可以同时在多个文件中声明,编译时再将各部分内容组合到一起。因此可以把同一个命名空间的定义拆开到多个文件中,也可以分散在多个文件中。【示例14-5】下面的程序定义了两个Coun的命名空间。一个包含Aclass类,另一个包含Bclass类。程序在编译的时候,会将这两个Coun命名空间的内容组合到一起。14.1.6嵌套命名空间一个名称空间可以嵌套在另一个命名空间之中。其格式如下图所示。嵌套命名空间还有另一种形式。格式如下:【示例14-6】以下程序B命名空间嵌套在A命名空间
7、中。其中,命名空间的名称之间以句点“.”隔开。例如:A.B.Bclassbc=newA.B.Bclass();14.1.7全局命名空间如果没有给程序声明命名空间,就会使用默认的全局命名空间。大多数实际的代码都需要包含在声明的命名空间中。把代码封装在声明的命名空间中主要是为了避免名称冲突。14.1.8使用命名空间别名限定符(::)尽管命名空间可以帮助避免名称冲突,但却不能完全消除这种冲突。如果在两个不同的命名空间中声明了相同的成员,而程序又同时引入了这两个命名空间,就会
此文档下载收益归作者所有