写了几天的C#程序,程序总会先声明一个名称空间:
namespace test
跟C++里名称空间一样,只是声明方法不同:
using namespace std;
名字空间是用来按照逻辑,对类进行划分,增强了程序的可读性,而且减少了命名的冲突。看到这个作用,我忽然想到了Java中的包,这两种东西感觉作用一致,都是为了避免名称冲突才进行一种区域性的划分的。
例如,java程序开头,总会先引入一些包:
import java.util.*;
这句话放在最前面,引入了util包中的所有类,然后,下面的程序就会调用包中内容。那么,C#中的名称空间跟Java中的包是不是相似的东西呢?
相似也有区别:
1, java里只有类,所以只需要把类定义在各自的包里就可以避免重复了.c++的命名空间里,不但可以包括类,还可以包括函数,变量,模板等.
2,C#里面的名称空间和java中的包都属于访问权限的控制机制,就是说,只有具备相应的权限才允许代码访问它们内部的类。但是java中的包需要对应一个物理文件夹,文件夹名必须和包的名称一致,C#中的名称空间则不受这种限制。
这两种东西,都是起到了一个分类打包,便于调用的作用。