《程序设计Csharp程序设计 (88).pdf》由会员分享,可在线阅读,更多相关《程序设计Csharp程序设计 (88).pdf(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C#程序设计 Programming in C#程序集和命名空间程序集和命名空间 1、多文件程序和程序集 2、命名空间 3、using指令 C#程序设计程序设计 8.2 命名空间和程序集 3 C#程序支持多文件程序结构。进行项目开发时,程序员可以使用已有类库中的类或类型,同样可以创建自己的类库。这些类库文件通常以.dll为扩展名,称为程序集。使用已有的程序集或创建并使用自己的程序集是大规模程序设计中不可或缺的环节。8.2.1 程序集 4 程序集是包含一个或者多个类型定义文件和资源文件的集合。在程序集包含的所有文件中,有一个文件用于保存包含了程序集中一部分文件的名称、程序集的版本、语言文化、发布
2、者、共有导出类型、以及组成该程序集的所有文件的程序集信息清单。8.2.1 程序集 5 图8.1 程序集的结构 8.2.1 程序集 6 程序集是.NET 框架应用程序的主要构造块。所有托管类型和资源都包含在某个程序集内,并被标记为只能在该程序集的内部访问,或者被标记为可以从其他程序集中的代码访问。程序集在安全方面也起着重要作用,是实施安全策略和版本策略的最小单位。8.2.1 程序集 7 进行项目开发时,可以引用已有的程序集。也可以自己创建程序集,部署安装后供其他程序使用。8.2.2 命名空间和using指令 8 为了解决程序集和类型之间的命名冲突问题,C#提供了使用命名空间对类型进行组织的机制。
3、命名空间是用来组织和重用代码的编译单元,是共享命名空间名称的一组类和类型。每个命名空间具有与其他命名空间不相同的唯一名称。8.2.2 命名空间和using指令 9 1声明命名空间 命名空间的声明语法形式如下:namespacenamespace 命名空间名命名空间名 命名空间成员命名空间成员 8.2.2 命名空间和using指令 10 命名空间的成员即命名空间中包括的类和类型,命名空间中包含的所有的类和类型的声明必须放在命名空间声明的大括号内。命名空间名是一个字符串,该字符串中可以包含.字符,.字符加在类名或类型名的前面进行信息分隔和层次组织。8.2.2 命名空间和using指令 11 例如:
4、namespacenamespace MineLibMineLib publicpublic classclass TestTest 8.2.2 命名空间和using指令 12 进行命名空间命名时,一般遵循下面的原则:命名空间名称可以是任何有效的标识符;一般使用公司名作为命名空间名的开始,在公司名后跟着技术名称;不要把命名空间命名为与类或类型相同的名称。8.2.2 命名空间和using指令 13 命名空间可以嵌套,产生嵌套的命名空间。嵌套的命名空间允许程序员创建类型的概念层次。8.2.2 命名空间和using指令 14 命名空间的嵌套声明有两种语法形式:/形式形式1 1 namespacena
5、mespace 命名空间名命名空间名1 1 命名空间命名空间1 1的成员的成员 namespacenamespace 命名空间名命名空间名2 2 命名空间命名空间2 2的成员的成员 8.2.2 命名空间和using指令 15/形式形式2 2 namespacenamespace 命名空间名命名空间名1 1 命名空间命名空间1 1的成员的成员 namespacenamespace 命名空间名命名空间名1 1.命名空间名命名空间名2 2 命名空间命名空间2 2的成员的成员 8.2.2 命名空间和using指令 16 下面是对命名空间的补充:在命名空间内,每个类型名必须有别于所有其他类型;命名空间不
6、是封闭的,它可以在多个源文件中进行再次声明以增加更多的成员。8.2.2 命名空间和using指令 17 2using指令 为了唯一标记所使用的类和类型,需要使用包括命名空间名、分隔点以及类名的完整字符串,即类的完全限定名来完成类或类型的调用。如下所示是使用类的完全限定名来描述类Console:SystemSystem.ConsoleConsole.WriteLineWriteLine(hello);(hello);8.2.2 命名空间和using指令 18 using指令包括using命名空间指令和using别名指令,使用using指令时必须放在源文件的顶端,在所有的类型声明之前,同时usin
7、g指令对源文件中的所有命名空间有效。8.2.2 命名空间和using指令 19 using命名空间指令 using命名空间指令通知编译器程序员将要使用来自某个指定命名空间的类型,格式如下:usingusing 命名空间名命名空间名;8.2.2 命名空间和using指令 20 例如:usingusing SystemSystem;usingusing SystemSystem.DataData.CommonCommon;8.2.2 命名空间和using指令 21 当编译器遇到一个不在当前命名空间的名称时,它检查在using命名空间指令中给出的命名空间列表,并把该未知名称加到列表中的第一个命名空间
8、后面,如果结果完全限定名匹配了该个程序集或引用程序集中的一个类,编译器将使用那个类。如果不匹配,那么编译器将试验列表中下一个命名空间,直到找到匹配的类为止。如果列表中所有的命名空间中都没有找到匹配的类,程序将会出现编译错误。因此,使用using命名空间指令后,可以通过简单类名来引用类。8.2.2 命名空间和using指令 22 例如:usingusing SystemSystem;ConsoleConsole.WriteLineWriteLine(“hellohello”););8.2.2 命名空间和using指令 23 using别名指令 using别名指令允许给命名空间或命名空间中的一个类
9、型起一个别名,语法形式如下:usingusing 别名别名=命名空间名命名空间名;/给命名空间起别名给命名空间起别名 usingusing 别名别名=类的完全限定名类的完全限定名;/给类型起别名给类型起别名 8.2.2 命名空间和using指令 24 例如:usingusing SystSyst=SystemSystem;/给命名空间给命名空间SystemSystem起别名起别名SystSyst usingusing SCSC=SystemSystem.ConsoleConsole;/给类给类System.ConsoleSystem.Console起别名起别名SCSC 8.2.2 命名空间和u
10、sing指令 25 例如:usingusing SystSyst=SystemSystem;/给命名空间给命名空间SystemSystem起别名起别名SystSyst usingusing SCSC=SystemSystem.ConsoleConsole;/给类给类System.ConsoleSystem.Console起别名起别名SCSC SCSC.WriteLineWriteLine(“hello”);(“hello”);/调用类调用类System.ConsoleSystem.Console的方法的方法WriteLineWriteLine SystSyst.ConsoleConsole.ReadRead();();/调用命名空间调用命名空间SystemSystem中类中类ConsoleConsole的方法的方法ReadRead 结束结束