程序集和命名空间的区别

来源:互联网 发布:手机屏幕直播录像软件 编辑:程序博客网 时间:2024/05/16 12:26

  说道程序集和命名空间这两个名词,就觉得特别的晕,真的是傻傻分不清,不知道为什么会有这样的名字,而它们的作用又是什么,真的完全无厘头,只知道这个名称。好了,接下来我要好好研究一篇了,不可以这样稀里糊涂的学习了。


下面是我在百度上查到官方权威的解释

【程序集定义】
1.程序集(assembly)是一个及一个以上托管模块,以及一些资源文件的逻辑组合。
2.程序集是组件复用,以及实施安全策略和版本策略的最小单位。
3.程序集是包含一个或者多个类型定义文件和资源文件的集合。在程序集包含的所有文件中,有一个文件用于 保存清单。(清单是元数据部分中一组数据表的集合,其中包含了程序集中一部分文件的名称,描述了程序集的 版本,语言文化,发布者,共有导出类型,以及组成该程序集的所有文件)。
4、在编译应用程序中,所创建的CIL代码存储在一个程序集中,程序集包括可执行的应用程序文件(.exe扩展名文件)和其他应用程序使用的库(.dll扩展名文件)。

【命名空间定义】

命名空间是用来组织和重用代码的  。如同名字一样的意思,NameSpace(名字空间),之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。为了解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的冲突了。
通常来说,命名空间是唯一识别的一套名字,这样当对象来自不同的地方但是名字相同的时候就不会含糊不清了。使用扩展标记语言的时候,XML的命名空间是所有元素类别和属性的集合。元素类别和属性的名字是可以通过唯一XML命名空间来唯一。
在XML里,任何元素类别或者属性因此分为两部分名字,一个是命名空间里的名字另一个是它的本地名。在XML里,命名空间通常是一个统一资源识别符(URI)的名字。而URI只当名字用。主要目的是为了避免名字的冲突。

【区别】

程序集和命名空间实际上没有什么关系。

程序集是.NET中相关类型的物理组织形式,有点类似于Windows的可执行文件或者动态链接库文件。

命名空间是逻辑上的,仅仅只是为了解决类名称的冲突问题而提供的给类“分类”的系统。

一个程序集可以包含多个命名空间,而一个命名空间也可以跨多个程序集。

如果说命名空间是类库的逻辑组织形式,那么程序集就是类库的物理组织形式。只有同时指定类型所在的命名空间及实 现该类型的程序集,才能完全限定该类型。(摘抄自《精通.NET核心技术--原来与架构》 电子工业出版社)




0 0