Assembly 与 namespace 有什么区别? Assembly 是编译好的dll namespace是命名空间,一个Assembly里包含多个namespace 我是这么理解的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 转一个namespace可以理解为逻辑上的函数库(里面包含各类函数),与之对应的是assembly,属于物理上的函数库(即一个个DLL文件)。namespace 是有层次的,这就好象书的章节一样,这样在使用namespace中的类和对象时,就比较容易了。象下面这个例子:dim abc As System.IO.StreamReader,一看就知道这是把abc定义为system命名空间下的IO子空间中的StreamReader类。由于各名字空间实际是保存在各程序集(assembly)中的,因此使用名字空间前需要先引用其所在的程序集。根据需要也可写 import namespace,这样以后使用namesapce中的类和对象时可省略那一长串路径。比如刚才的例子可以写成这样:import System.IOdim abc as StreamReader有了namespace后,同名的类和函数就被允许了,因为它们位于不同的namespace中,不会产生冲突!比如System.Web.UI空间下有 TextBox类,而System.Windows.Forms空间下也有一个TextBox类,这两个类的名字完全一致(其实功用也差不多),但你在使用它们的时候,系统能够很好的分辨到底是哪一个,这就是namespace的关系!当然,除了系统的namespace,开发者可以自己定义自己的namespace。其实当你编译一个解决方案时,系统也会用你的项目名称做名字,生成一个namespace,并把你的类(其实每个web页面就是一个类)都放在这个namespace下面! Assembly 程序集 也就是DLL EXE .... 下面可能有很多个 Namespace Namespace 命名空间..下面有很多个 CLASS+ Assembly----NamespaceA----NamespaceB----NamespaceC也就这样的结构. 前者是程序集 后者是命名空间 namespace可以理解为逻辑上的函数库(里面包含各类函数),与之对应的是assembly,属于物理上的函数库(即一个个DLL文件)。 namespace是有层次的,这就好象书的章节一样,这样在使用namespace中的类和对象时,就比较容易了。象下面这个例子:dim abc As System.IO.StreamReader,一看就知道这是把abc定义为system命名空间下的IO子空间中的StreamReader类。 由于各名字空间实际是保存在各程序集(assembly)中的,因此使用名字空间前需要先引用其所在的程序集。 根据需要也可写 import namespace,这样以后使用namesapce中的类和对象时可省略那一长串路径。比如刚才的例子可以写成这样: import System.IO dim abc as StreamReader 有了namespace后,同名的类和函数就被允许了,因为它们位于不同的namespace中,不会产生冲突!比如System.Web.UI空间下有TextBox类,而System.Windows.Forms空间下也有一个TextBox类,这两个类的名字完全一致(其实功用也差不多),但你在使用它们的时候,系统能够很好的分辨到底是哪一个,这就是namespace的关系! 当然,除了系统的namespace,开发者可以自己定义自己的namespace。其实当你编译一个解决方案时,系统也会用你的项目名称做名字,生成一个namespace,并把你的类(其实每个web页面就是一个类)都放在这个namespace下面! Assembly :程序集:.net 程序的执行经过两个步骤。首先编译为MSIL,或者IL就是中间语言,这个跟平台无关,跟操作系统无关的2进制代码。然后执行的时候有一个JIT编译器将其编译为机器代码。这样程序得以执行,程序集不仅包含msil,还包含元数据,就是一些自描述的内容,比如类型,引用的其他程序集等等,还有一些资源。程序集一般在代码中跟反射一起出现。 namespace:命名空间。就是用来区分各个类的一个框框。避免类名字的冲突。虽然俩个类名称相同,但是只要命名空间不一样,就能正常使用。一个命名空间可以包含多个程序集,一个程序集也可以跨越多个命名空间。还有就是命名空间引用的问题也要注意下。 namespace 关键字用于声明一个范围。此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法命名空间名可以是任何合法的标识符。命名空间名可以包含句号。 即使未显式声明命名空间,也会创建默认命名空间。该未命名的命名空间(有时称为全局命名空间)存在于每一个文件中。全局命名空间中的任何标识符都可用于命名的命名空间中。 命名空间隐式具有公共访问权,并且这是不可修改的。 assembly配件,程序集(assembly)是包含编译好的、面向.NET Framework的代码的逻辑单元。程序集是完全自我描述性的,也是一个逻辑单元而不是物理单元,它可以存储在多个文件中(动态程序集的确存储在内存中,而不是存储在文件中)。如果一个程序集存储在多个文件中,其中就会有一个包含入口点的主文件,该文件描述了程序集中的其他文件。 "一个命名空间可以包含多个程序集"------可以理解为不同的程序集里面可以有同一个命名空间对于一个解决方案下的有多个项目的情况,比如启动项目A,从属项目B和C项目A,B,C可以使用一个名字空间,这个时候在项目A中将B,C引用进来以后,就可以直接在A中使用B,C中的类了。如果A,B,C可以并非使用一个名字空间,这个时候在项目A中将B,C引用进来以后,需要在A中每个程序文件开始行加上引入名字空间的程序(import ...)后,才可以在A中使用B,C中的类了"一个程序集也可以跨越多个命名空间"------可以理解为程序集里面可以有多个命名空间。换而言之基本上一个项目可以生成一个程序集,而一个项目中肯定是可以有多个名字空间 Assembly信息里包括的东西更多.比如:版本信息. Assembly信息里包括的东西更多.比如:版本信息. 加密狗 使用问题! 熟悉discuz!nt的朋友 麻烦帮我看下哈 新手求助:关于asp.net网站上传问题 重新提问:如何像操作变量一样操作<%#Eval()%>? 求鼠标放上去显示隐藏层的代码 学习MVC出现这样的问题 _________关于三层结构中的数据层设计 iis中,为何拷到wwwroot目录下的其中一个文件夹中就浏览失败? 见者有分[急~~~],DataGrid数据绑定问题,高手帮个忙。 如何对Web安装项目进行加密或者混淆啊? 赠送99元的《C#开发技术大全》 日期控件的错误问题(可分享js控件)---请您解答
namespace可以理解为逻辑上的函数库(里面包含各类函数),与之对应的是assembly,属于物理上的函数库(即一个个DLL文件)。
namespace 是有层次的,这就好象书的章节一样,这样在使用namespace中的类和对象时,就比较容易了。象下面这个例子:dim abc As System.IO.StreamReader,一看就知道这是把abc定义为system命名空间下的IO子空间中的StreamReader类。由于各名字空间实际是保存在各程序集(assembly)中的,因此使用名字空间前需要先引用其所在的程序集。
根据需要也可写 import namespace,这样以后使用namesapce中的类和对象时可省略那一长串路径。比如刚才的例子可以写成这样:
import System.IO
dim abc as StreamReader有了namespace后,同名的类和函数就被允许了,因为它们位于不同的namespace中,不会产生冲突!比如System.Web.UI空间下有 TextBox类,而System.Windows.Forms空间下也有一个TextBox类,这两个类的名字完全一致(其实功用也差不多),但你在使用它们的时候,系统能够很好的分辨到底是哪一个,这就是namespace的关系!当然,除了系统的namespace,开发者可以自己定义自己的namespace。其实当你编译一个解决方案时,系统也会用你的项目名称做名字,生成一个namespace,并把你的类(其实每个web页面就是一个类)都放在这个namespace下面!
Namespace 命名空间..下面有很多个 CLASS+ Assembly
----NamespaceA
----NamespaceB
----NamespaceC也就这样的结构.
后者是命名空间 namespace可以理解为逻辑上的函数库(里面包含各类函数),与之对应的是assembly,属于物理上的函数库(即一个个DLL文件)。
namespace是有层次的,这就好象书的章节一样,这样在使用namespace中的类和对象时,就比较容易了。象下面这个例子:dim abc As System.IO.StreamReader,一看就知道这是把abc定义为system命名空间下的IO子空间中的StreamReader类。 由于各名字空间实际是保存在各程序集(assembly)中的,因此使用名字空间前需要先引用其所在的程序集。
根据需要也可写 import namespace,这样以后使用namesapce中的类和对象时可省略那一长串路径。比如刚才的例子可以写成这样:
import System.IO
dim abc as StreamReader 有了namespace后,同名的类和函数就被允许了,因为它们位于不同的namespace中,不会产生冲突!比如System.Web.UI空间下有TextBox类,而System.Windows.Forms空间下也有一个TextBox类,这两个类的名字完全一致(其实功用也差不多),但你在使用它们的时候,系统能够很好的分辨到底是哪一个,这就是namespace的关系! 当然,除了系统的namespace,开发者可以自己定义自己的namespace。其实当你编译一个解决方案时,系统也会用你的项目名称做名字,生成一个namespace,并把你的类(其实每个web页面就是一个类)都放在这个namespace下面!
.net 程序的执行经过两个步骤。
首先编译为MSIL,或者IL就是中间语言,
这个跟平台无关,跟操作系统无关的2进制代码。
然后执行的时候有一个JIT编译器将其编译为机器代码。这样程序得以执行,
程序集不仅包含msil,还包含元数据,就是一些自描述的内容,比如类型,引用的其他程序集等等,
还有一些资源。程序集一般在代码中跟反射一起出现。
namespace:
命名空间。
就是用来区分各个类的一个框框。避免类名字的冲突。
虽然俩个类名称相同,但是只要命名空间不一样,就能正常使用。一个命名空间可以包含多个程序集,一个程序集也可以跨越多个命名空间。还有就是命名空间引用的问题也要注意下。
命名空间名可以是任何合法的标识符。命名空间名可以包含句号。
即使未显式声明命名空间,也会创建默认命名空间。该未命名的命名空间(有时称为全局命名空间)存在于每一个文件中。全局命名空间中的任何标识符都可用于命名的命名空间中。
命名空间隐式具有公共访问权,并且这是不可修改的。
assembly配件,程序集(assembly)是包含编译好的、面向.NET Framework的代码的逻辑单元。程序集是完全自我描述性的,也是一个逻辑单元而不是物理单元,它可以存储在多个文件中(动态程序集的确存储在内存中,而不是存储在文件中)。如果一个程序集存储在多个文件中,其中就会有一个包含入口点的主文件,该文件描述了程序集中的其他文件。
对于一个解决方案下的有多个项目的情况,
比如启动项目A,从属项目B和C
项目A,B,C可以使用一个名字空间,这个时候在项目A中将B,C引用进来以后,就可以直接在A中使用B,C中的类了。
如果A,B,C可以并非使用一个名字空间,这个时候在项目A中将B,C引用进来以后,需要在A中每个程序文件开始行加上引入名字空间的程序(import ...)后,
才可以在A中使用B,C中的类了
"一个程序集也可以跨越多个命名空间"------可以理解为程序集里面可以有多个命名空间。
换而言之
基本上一个项目可以生成一个程序集,而一个项目中肯定是可以有多个名字空间