4.3 命名空间和程序集

  • 命名空间对相关的类型进行逻辑分组。
  • C# using 指令指示编译器尝试为类型名称附加不同的前缀,直至找到匹配项。
  • CLR 对命名空间一无所知。访问类型时,CLR需要知道类型的完整名称以及类型定义在哪个具体的程序集中。
  • 编译器扫描引用的所有程序集,查找类型定义。如果找到,程序集信息和类型信息就嵌入生成的托管模块元数据中。
  • MSCorLib.dll 程序集包含了所有核心 Framework 类库(FCL)的定义。(如 Object, Int32, String 等)
  • 潜在问题:多个类型在不同命名空间重名。需要开发人员确保唯一性。
  • C# using指令允许为类型或命名空间创建别名。

  • C# 编译器提供外部别名(extern alias)功能。
  • CLR 编译器在类型定义元数据表中添加的实际类型名称。

    • 命名空间和程序集不一定相关:同一命名空间的类型可能在不同程序集中;同一程序集也可能包含不同命名空间。
    • 在MSDN中可以看到程序集以及命名空间



  • using 指令的范围限制为包含它的文件。
  • 创建 using 别名,以便更易于将标识符限定到命名空间或类型。 using 别名指令的右侧必须始终是一个完全限定类型,而与前面的 using 指令无关。
  • 创建 using 指令,以便在命名空间中使用类型而不必指定命名空间。 using 指令不为您提供对嵌套在指定命名空间中的任何命名空间的访问。

    using System.Text 并不能访问到System命名空间下的方法。

时间: 2024-08-08 16:29:26

4.3 命名空间和程序集的相关文章

第二十一章 命名空间和程序集

命名空间和程序集引用其他程序集mscorlib库命名空间命名空间名称命名空间的补充命名空间跨文件伸展嵌套命名空间using 指令using命名空间指令using别名指令程序集的结构程序集标识符强命名程序集创建强命名程序集程序集的私有方式部署共享程序集和GAC把程序集安装到GACGAC内的并肩执行配置文件延迟签名 命名空间和程序集 引用其他程序集 在第1章中,我们在高层次上观察了编译过程.编译器接受源代码文件并生称名称为程序集的输出文件.这一章中,我们将详细阐述程序集以及它们是如何生成和部署的.你

读经典——《CLR via C#》(Jeffrey Richter著) 笔记_命名空间和程序集的关系

命名空间和程序集不一定相关 1. 同一个命名空间中的各个类型可能是在不同的程序集中实现的.(System.IO.FileStream在MSCorLib.dll程序集中,而System.IO.FileSystemWatcher在System.dll程序集中) 2. 同一个程序集中,也可能包含不同命名空间中的类.(System.Int32和System.Text.StringBuilder类型都在MSCorLib.dll程序集中)

命名空间与程序集

刚开始写程序时,老是分不清命名空间和程序集两个概念,最直接的表现就是要使用的类.查找MSDN以后,又是添加程序集又是添加命名空间,虽然最后能达到目的,却从来没有认真理解命名空间和程序集这两个概念,更不清楚两者的联系和区别. 查了一些资料后明白: 命名空间是代码标识符的一种组织形式和具名容器,是一个逻辑概念. 程序集是代码编译后存储的组织形式,有具体的存储文件格式,通常是.dll或.exe扩展名. 命名空间与程序集

命名空间与程序集的区别【转】

本文内容转自:http://www.cnblogs.com/hjtdlx/archive/2011/10/30/2229508.html 1.命名控件与程序集的区别. 命名空间用于对类型进行逻辑分组.程序集则是程序的物理分组,对应于一个dll或exe文件. 2.为什么要使用两种方式分组?把逻辑分组作为物理分组不是更简单吗?      逻辑分组主要针对开发人员,而物理分组主要针对安装和部署. 除此之外,以下情况也需要使用两种方式分组,否则会很不方便. 1)团队开发.一个公司分别由不同的部门共同开发

命名空间和程序集

命名空间 命名空间是在逻辑上分割代码,程序集是在物理上分割代码. 嵌套命名空间 namespace one { namespace two { } } 通过one.two引用内部嵌套的命名空间的代码. 命名空间不必和程序集同名. 类的可见性 internal 修饰的类,仅能在本程序集中访问. public修饰的类,可以在任意程序集中访问. 同一个程序集,引入命名空间即可使用类.非同一个程序集,要包含dll,同时引入命名空间. 原文地址:https://www.cnblogs.com/rivers

解决方案、项目、程序集、命名空间

原文地址:http://www.cnblogs.com/wayfarer/archive/2006/04/07/369371.html <叩开C#之门>系列之一 前言:表弟想要学编程,我推荐他学习.Net和C#.这一推荐不打紧,我却承担上了指导的职责.我又出差在外,直接辅导是不行了,通过邮件也太麻烦.推荐了几本书,可惜他太菜了,总有无从下手的感觉.推及他人,在初学C#时,是否也有这样的感觉呢?所以,就有了这个系列文章.表弟是我把他带入计算机行业的,当初什么都不懂,我曾经打开计算机机箱,指点他哪

解决方案、项目、程序集、命名空间区别

是不是有人也像我一样,弄不清他们几个的关系呢? 1.项目 新建项目的同时,会自动建立此项目对应的解决方案名称,默认二者名称一样. 在.Net下,一个项目可以表现为多种类型:控制台应用程序.类库.web应用程序等 2.解决方案 解决方案其实是一个容器,其下边可以包含多个项目. 例如机房重构解决方案下边包含的7层(7个项目U/B/D) 3.程序集 可以理解为dll.每个项目都有一个dll文件,这个dll中包含了这个项目中所用到的所有的方法程序. 项目之间的引用调用,也是通过封装的dll实现. 4.命

面向对象(一)封装 命名空间 访问修饰符等

一.封装 封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成"类",其中数据和函数都是类的成员. 封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部借口,以特定的访问权限来使用类的成员. public class 类名 { //成员变量 private 数据类型 _属性名; //属性 public 数据类型 属

【2017-04-14】命名空间、访问修饰符、封装、继承、多态

一.命名空间 namespace 命名空间名称 如果命名空间一致,才能在他下面访问那些不同的类,如果不一致是没有办法直接访问的. 不同命名空间下都是public访问修饰符,想要调用,得在using处引用命名空间 using .... 是引用的命名空间 二.访问修饰符(写在命名任何东西的最前面) public    公共的,访问权限最高 private    私有的,访问权限最低,只能在类的内部进行访问 protected   被保护的,当前类及他的派生类中进行访问 internal    默认的