- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
轻松学# 14章 命名空间、预处理器和程序
第14章 命名空间、预处理器和程序集为了方便开发者开发复杂的大型程序,C#提供各种机制来提高开发效率和编译效率。常用的机制包括命名空间、预处理和程序集。其中,命名空间解决了资源命名问题。预处理器可以有效提升编译效率。程序集则是C#编程的基本组成内容。本章将详细介绍这3个C#功能:命名空间、预处理器和程序集。14.1 命名空间命名空间定义了一个声明区域,它提供了将一组名称与另一组名称进行区分的方法。一个命名空间中声明的名称不会与另一个命名空间中声明的相同名称冲突。所有的C#程序都会以某种方式使用命名空间。在前面的章节中,程序只简单地使用了全局命名空间。但是在实际情况中,许多程序都需要创建自己的命名空间或者与其他的命名空间进行交互。本章将详细介绍这些内容。14.1.1 命名空间的声明使用namespace关键字可以声明一个命名空间,其通用形式如下图所示。其中,name是命名空间的名称。命名空间声明定义了一个作用域,定义在命名空间中的所有元素都限制在该命名空间的作用域内。命名空间的成员可以是用户声明的类、结构、委托、枚举和接口,也可以是另一个命名空间。【示例14-1】下面代码创建了一个名为Coun的命名空间,它把一个实现简单倒计时计数器功能的CounDow类限制在该命名空间中。第一,由于CounDow类是在Coun命名空间中声明的,因此在创建CounDow对象时,必须使用Coun限定CounDow类。代码如下: Coun.CounDow cd1 = new Coun.CounDow(10);Coun.CounDow cd2 = new Coun.CounDow(15);第二,一旦创建Coun类型的对象,就不需要使用命名空间进一步限定该变量或它的任何成员。因此,可以直接调用cd1.Cont()方法而不用使用命名空间限定。代码如下:i = cd1.Cont();i = cd2.Cont();14.1.2 命名空间的作用命名空间的作用是,在它内部声明的名称不会与在它外部声明的相同名称冲突。【示例14-2】以下程序定义了两个命名空间。其中一个命名空间是Coun,另一个是Coun2。它们都包含CounDow类,但是因为这两个类包含在不同的命名空间中,所以不会产生冲突。虽然,Coun命名空间内部的CounDow类与Coun2命名空间中的CounDow类名称相同,但是这两个类在不同的命名空间中是相互独立的,不会产生冲突。注意:这里只能是不同名称命名空间中的相同成员。如果是相同名称命名空间中的相同成员,将不能避免冲突。14.1.3 using指令如果程序需要频繁地引用某个命名空间中的成员,那么每次都指定它的命名空间就会很麻烦。使用using指令可以解决这个问题。必须在每个文件的开头指定using指令,它位于所有其他的声明之前,或者位于命名空间主体的开始位置。此外,using指令也可以用来引入用户自定义的命名空间。using指令有两种形式,第一种形式如下:using name;其中,name指定要访问的命名空间名称。引入命名空间后,就会引入所有定义在该命名空间中的成员,并且能够不加限定地使用它们。【示例14-3】下面的程序重写了前面的计数器示例,介绍如何使用using指令引入自定义的命名空间。14.1.4 using指令的另一种形式using指令的另一种形式可以为类型或命名空间创建别名,代码如下:using abc=name;其中,abc是name所指定的类型或命名空间的别名。一旦创建别名,就可以使用别名代替原始的名称。【示例14-4】下面的程序还是重写前面的计数器示例,介绍如何使用using指令的另一种形式引入自定义的命名空间。14.1.5 命名空间的合成一个命名空间可以同时在多个文件中声明,编译时再将各部分内容组合到一起。因此可以把同一个命名空间的定义拆开到多个文件中,也可以分散在多个文件中。【示例14-5】下面的程序定义了两个Coun的命名空间。一个包含Aclass类,另一个包含Bclass类。程序在编译的时候,会将这两个Coun命名空间的内容组合到一起。14.1.6 嵌套命名空间一个名称空间可以嵌套在另一个命名空间之中。其格式如下图所示。嵌套命名空间还有另一种形式。格式如下:【示例14-6】以下程序B命名空间嵌套在A命名空间中。其中,命名空间的名称之间以句点“.”隔开。例如:A.B.Bclass bc = new A.B.Bclass();14.1.7 全局命名空间如果没有给程序声明命名空间,就会使用默认的全局命名空间。大多数实际的代码都需要包含在声明的命名空间中。把代码封装在声明的命名空间中主要是为了避免名称冲突。14.1.8 使用命名空间别名限定符(::)尽管命名空间可以帮助避免名称冲突,但却不能完全消除这种冲突。如果在两
文档评论(0)