一周学会C#(命名空间)

一周学会 C# (命名空间)

C# 才鸟( QQ:249178521 )

1. 问题

· ** 越大的程序包含的名字越多 ** ** **

w ** 越多的名字 ** ** - ** ** 越大的可能性导致命名冲突 ** ** **

w ** 你是怎样命名以反映结构 ** ** **

w ** 显式的前缀不是一个很好的解决方法 ** ** **

** sealed class Book **

** { **

** ... **

** } **

** sealed class GUIBook **

** { **

** ... **

** } **

** // ** ** 传统的命名方法 **

2. 解决的方法

· ** 一个命名空间是一个逻辑的命名系统 ** ** **

w ** 命名空间表示一个范围 ** ** **

w ** 任何 ** ** .cs ** ** 文件中都可以在任一命名空间中插入类 ** ** **

w ** 单独的一个 ** ** .cs ** ** 文件可以访问多个命名空间 ** ** **

** namespace GUI **

** { **

** sealed class Book **

** { **

** ... **

** } **

** } **

** // ** ** 命名空间的解决方法 **

使用命名空间的方法可以反映程序中的逻辑关系。上面的例子说明你在 GUI 命名空间中声明了一个类叫 Book ,而不是使用 GUIBook 这么长的名字。

3. 嵌套的命名空间

· ** 一个命名空间可以包含其他的命名空间 ** ** **

w ** 使用嵌套来反映程序的结构 ** ** ** ** **

w ** 命名空间总是隐含为 ** ** public ** ** **


** namespace RainForest **

** { **

** namespace GUI **

** { **

** sealed class Book **

** { **

** ... **

** } **

** } **

** } **


** namespace ** ** RainForest.GUI **

** { **

** ** ** sealed ** ** ** ** class ** ** Book **

** { **

** ... **

** } **

** } **

上面两个程序是等价的。

命名空间可以包含类和其他的命名空间,但不能包含数据。

嵌套的命名空间之间的结构反映了程序组织的逻辑结构。

命名空间隐含为 public ,也就是说命名空间的声明不能包含任何访问修饰符,连 public 也不能加。命名空间之所以隐含为 public 是因为这样任何一个程序的任何一部分都可以访问它。还必须注意的是,因为命名空间是隐含为 public ,所以它的命名应使用 PascalCase 命名规则,即所有单词的首字母大写。

嵌套的命名空间可以非常有效地组织大型程序的逻辑结构。但是每一层都重复键入关键字 namespace 的话,那将是非常繁的。但正如上面的例子中所示的,你可以使用简写的方法。

4. 全名

· ** 命名空间反映的是逻辑结构 ** ** **

w ** 带点的全名称是冗长和讨人厌的 ** ** **

w ** 但它比不带点的名字要好 ** ** **

** namespace RainForest.GUI **

** { **

** sealed class Book **

** { **

** ... **

** private System.Collections.Hashtable pages; **

** } **

** } **

命名空间的使用可以避免命名冲突,但是它会导致名字的长度增加。例如, .NET framework 有一个类叫 Hashtable 。这个类位于 Collections 命名空间,而 Collections 命名空间又位于 System 命名空间,这就意味着 Hashtable 类的全名是 System.Collections.Hashtable (好长啊)。

5.using 标记

· ** using ** ** 标记使类在命名空间中可见 ** ** **

w ** 只能在一个命名空间的开头使用 ** ** **

** namespace RainForest.GUI **

** { **

** using System.Collections; **

** ... **

** sealed class Book **

** { **

** ... **

** private Hashtable pages; **

** } **

** } **

using 标识只能用在命名空间的开头,放在任何类声明语句的开头。 using 标识符的作用是能够使用简写的形式来调用该命名空间中的类。例如在上面的例子中, Book 类声明了一个私有字段 pages ,它是 Hashtable 类的。 Book 类声明这个字段时使用的是简写形式,而不是它的全名 System.Collections.Hashtable 。

· ** using ** ** 标记也可以被用在 ** ** .cs ** ** 文件的开头 ** ** **

** using System; // ** ** 表示全局空间 **

** sealed class Global **

** { **

** static void Main (string[] args) **

** { **

** Console.Write(args[0]); **

** } **

** } **

6. 引用别名

· **_ using _ ** ** ** ** 别名 ** ** ** ** 产生一个别名用于: ** ** **

w ** 类或命名空间 ** ** **

w ** 只能被用在命名空间的开头 ** ** **

** namespace RainForest.GUI **

** { **

** using Hashtable = System.Collections.Hashtable; **


** sealed class Book **

** { **

** ... ** <SPAN lang=EN-GB st

Published At
Categories with Web编程
Tagged with
comments powered by Disqus