标签:编译器 引用 添加引用 文件系统 程序 注册 lob 对象 类型
第九周总结
异常是指程序运行时出现的非正常的情况,如访问对象引用无效、除零错误等。为了防止程序因出现异常而中断,C#语言提供了异常处理语句,使用户有机会对出现的异常进行处理,增强程序的健壮性。
异常处理
在编写程序时,不仅要关心程序的正常操作,还应该检查代码错误及可能发生的各类不可预期的事件。在现代编程语言中,异常处理是解决这些问题的主要方法。异常处理是一种功能强大的机制,用于处理应用程序可能产生的错误或是其他可以中断程序执行的异常情况。异常处理可以捕捉程序执行时所发生的错误,通过异常处理可以有效、快速地构建各种用来处理程序异常情况的程序代码。
1、将预见可能引发异常的代码包含在try语句块中。
2、如果发生了异常,则转入catch的执行。
在程序中使用异常语句时,try代码块是必须有的,而catch代码块和finally代码块必须要有一个,否则会出现编译错误。
当程序中出现异常时,不仅可以通过try…catch代码块捕获异常,还可以使用throw关键字抛出异常对象。该异常对象可以被上层的try…catch代码块捕获处理,也可以不作处理。
throw关键字经常被用于将异常抛给上层代码处理,如果一直没有被处理,最后就会被操作系统捕捉到,而try…catch…会将程序抛出的异常直接进行处理。
命名空间
在实际开发过程中,除了自己编写的程序外还存在引用其他程序的情况,这时可能会碰到类名相同的情况。为此,C#中引入了命名空间这个概念,可以将命名空间理解为程序定义的一个目录,使用命名空间可以有效避免类名冲突的问题
由于使用完全限定名的方式不利于程序代码的阅读而且会导致代码的冗余,所以C#中还可以使用using关键字添加对命名空间的引用,这样在程序中调用其他命名空间下的类时就可以直接使用,而无需使用完整的限定名,例如下面这段代码就是使用了using关键字引入了Example这个命名空间
完全限定名可能想当长,在代码中通篇使用它们会变得十分乏味。然而,有两个编译指令,可以使你避免不得不使用完全限定名:using命名空间指令和using别名指令。
关于using指令词的两个要点:
它们必须放在源文件的顶端,在任何类型声明之前。
它们应用于当前源文件中的所有命名空间。
迄今为止所有开发的程序使用的都是自己的类,然而在许多项目中可能会用到其他程序中的类,此时就需要使用程序集(扩展名为.dll),所谓的程序集就是包含一个或多个类型的定义文件和资源文件的集合,该程序集中的文件可以被其他程序使用。
注意,在MyWidgets.exe源代码部分,没有声明类SquareWidget。相反,使用的是定义在SuperLib中的类。然而,当你编译MyWidgets程序时,编译器必须知道你的代码在使用程序集SuperLib,这样它才能得到关于类SquareWidget的信息。要实现这点,需要给编译器一个到该程序集的引用,给出它的名称和位置。书本上介绍一种添加引用的方法,我在这里给出另外一种方法:
程序集文件可分为四个部分,分别是程序集清单、元数据、CIL、资源集,具体说明如下:
− 程序集清单:包含描述该程序集中各元素彼此如何关联的数据集合,还包含指定该程序集的版本信息、安全标识所需的元数据、定义该程序集的范围以及解析对资源和类应用所需的元数据。
− 元数据:提供有关程序集中定义的类型信息,包括类型的名称、基类和类型所实现的接口等。
− CIL:程序类型中所有的中间代码。
− 资源集:诸如位图、指针、静态文本等。
程序集的私有方式部署
在目标机器上部署一个程序就像在该机器上创建一个目录并把应用程序复制过去一样简单。如果应用程序不需要其他程序集(比如DLL),或如果所需的DLL在同一目录下,那么程序应该会就在它所在的地方良好工作。这种方法部署的程序集称为私有程序集,而且这种部署方法称为复制文件(XCopy)部署。
关于私有程序部署的一些重要事情如下 :
私有程序集所在的目录被称为应用程序目录。
没有必要在注册表中注册组件。
要卸载一个私有程序集,只要从文件系统中删除它即可。
私有程序集可以是强命名的也可以是弱命名的。
共享程序集和GAC
私有程序集是非常有用的,但有时你会想把一个DLL放在一个中心位置,这样一个单独的复制就能被系统中其他的程序集共享。.NET有这样的贮藏库,称为全局程序集缓存(GAC, Global Assembly Cache)。放进GAC的程序集称为共享程序集。
关于GAC的一些重要内容如下
只有强命名程序集能被添加到GAC。
虽然GAC的早期版本只接受带.dll扩展名的文件,现在也可以添加带.exe扩展名的程序集。
GAC位置在名称为Assembly的子目录下,在Windows系统目录中。
标签:编译器 引用 添加引用 文件系统 程序 注册 lob 对象 类型
原文地址:https://www.cnblogs.com/LiangIT12138/p/10777126.html