.net相关概念

来源:互联网 发布:社交网络下载 编辑:程序博客网 时间:2024/05/01 11:30
  1. CLR:通用语言运行时,可被各种不同编程语言共同使用的运行时(.net能够通吃多种编程语言全靠它了)。
  2. 元数据:一个数据表的集合,在这些表中,其中一些用于描述托管模块中所定义的内容(如所定义的类型及其成员);还有一些用于描述托管模块中所引用的内容(如被引用的类型及其成员)。
  3. 程序集:是一个或多个托管模块,以及一些资源文件的逻辑集合。程序集是组件复用,以及实施安全策略和版本策略的最小单位,可以是一个文件或多个文件的集合。
  4. MSCorEE.DLL 微软组件对象运行时执行引擎。其中两个重要的导入函数:_CorExeMain()与_CorDllMain()。当托管exe或托管dll被加载时,首先windows检查exe或dll的.idata部分,发现MSCorEE.dll需要被加载到内存中,然后加载器获得MSCorEE.dll中的_CorExeMain()或者_CorDllMain()的地址,接着,这两个函数初始化CLR,并查看exe或dll中的CLR表头以确定要执行的托管入口点方法。入口点找到以后,其IL代码将随之被编译成本地cpu指令,最后,cpu跳转到编译后的本地指令上(即使用进程的主线程)。
  5. CTS:通用类型系统。.net用来描述类型的定义和行为,以实现一种编程语言编写的代码可以和另一种语言编写的代码进行无缝集成。
  6. CLS:通用语言规范。为编译器厂商描述了面向CLR的编译器必须支持的一个最小特性集合,以便用一种语言创建的类型可以被其他语言方便的访问。
  7. .net程序的执行:高级语言编译器产生IL代码,程序在执行时,CLR中的JIT的工作是将IL代码编译成本地CPU指令(IL与CPU平台无关)。
  8. 强命名程序集与弱命名程序集:前者有一个发布者的公钥/私钥对签名,其中公钥/私钥对唯一的标识了程序集的发布者,利用它,可以对程序集进行唯一的标识,实施安全策略和版本控制策略等。
  9. GAC:全局程序集缓存。目的是为在强命名程序集和子目录之间维持一个关系;CLR内有一个内部函数,接受程序集名称、版本、语言文化以及公钥标记4个参数,返回指定程序集文件所在的子目录的路径。
  10. 装箱:将一个值类型转换成一个引用类型。步骤:(1)从托管堆中为新生成的引用类型对象分配内存;(2)将值类型实例的字段拷贝到新分配的对象的内存中;(3)返回托管堆中新分配对象的地址。
  11. 拆箱:获取指定对象中包含的值类型部分(数据字段)的指针。
  12. 引用参数ref跟out的区别:out——调用代码在调用该方法之前可以不初始化该参数,且被调用方法不能直接读取参数的值,它必须在返回之前为该参数赋值;ref——调用代码在调用该方法之前必须首先初始化该参数,被调用方法可以任意选择读取该参数,或为该参数赋值。
  13. 值类型与引用类型区别:前者分配在栈区,后者分配在托管堆上。
  14. overide与重载的区别:重载的方法签名是不同的。
  15. 接口与抽象类的区别:(1)抽象类中可以提供实现也可不提供;接口中只有方法签名而没有实现;(2)一般使用接口的地方也可以使用抽象类来代替,但是.net中可以实现接口的多重继承,而类则不可以;(3)方法前加virtual关键字,可以在子类中重写父类方法;(4)显式接口实现可以使得我们实现一个接口的同时,将其成员从类型的共有接口中屏蔽掉。
  16. 委托:委托是.net实现回调函数的形式。单从委托的概念上来讲,就是对方法的引用,包括静态方法和对象实例的方法,有点类似C语言中的方法指针,不过方法指针只能引用静态方法!而且委托是类安全的! 一句话来概括:委托就是方法的入口!
  17. Reflection,中文翻译为反射。这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息,例如:Assembly类可以获得正在运行的装配件信息,也可以动态的加载装配件,以及在装配件中查找类型信息,并创建该类型的实例。
    Type类可以获得对象的类型信息,此信息包含对象的所有要素:方法、构造器、属性等等,通过Type类可以得到这些要素的信息,并且调用之。MethodInfo包含方法的信息,通过这个类可以得到方法的名称、参数、返回值等,并且可以调用之。
  18. DataReader、DataSet与DataTable的区别:DataReader 从数据库中检索只读、只进的数据流。因为每次在内存中始终只有一行,所以使用DataReader 可提高应用程序的性能并减少系统开销。DataSet是数据集,里边有很多的DataTable,而DataView 是建立在DataTable的基础上的,就像sqlserver里的视图一样。
 
原创粉丝点击