C#名称空间 VS Java包

2014-11-24 02:35:59 · 作者: · 浏览: 0

写了几天的C#程序,程序总会先声明一个名称空间:

   namespace test

C++里名称空间一样,只是声明方法不同:

 using namespace std;

名字空间是用来按照逻辑,对类进行划分,增强了程序的可读性,而且减少了命名的冲突。看到这个作用,我忽然想到了 Java中的包,这两种东西感觉作用一致,都是为了避免名称冲突才进行一种区域性的划分的。

例如,java程序开头,总会先引入一些包:

 import java.util.*;

这句话放在最前面,引入了util包中的所有类,然后,下面的程序就会调用包中内容。那么,C#中的名称空间跟Java中的包是不是相似的东西呢?


相似也有区别:

1, java里只有类,所以只需要把类定义在各自的包里就可以避免重复了.c++的命名空间里,不但可以包括类,还可以包括函数,变量,模板等.

2,C#里面的名称空间和java中的包都属于访问权限的控制机制,就是说,只有具备相应的权限才允许代码访问它们内部的类。但是java中的包需要对应一个物理文件夹,文件夹名必须和包的名称一致,C#中的名称空间则不受这种限制。


这两种东西,都是起到了一个分类打包,便于调用的作用。