摘要:1.Object的memberwiseClone方法2.用运行时序列化器反序列化对象时,通常也不调用构造函数
阅读全文
摘要:工作4年多,越来越感觉到对于基础概念的定义的理解非常的重要,因为基础的东西我们忽略了,去追求这样那样所谓高级的东西,很容易站在空中楼阁一样,随时会垮掉的。1.常量:常量就是只出数据值恒定不变的一个符号2.字段:字段表示一个只读或可读/写的数据值3.实例构造器:实例构造器是将新对象的实例字段初始化为良好初始状态的一种特殊方法4.类型构造器:类型构造器是将类型的静态字段初始化为良好初始状态的一种特殊方式。5.方法:方法是一种特殊的函数,作用是更改或者查询一种类型或者对象的状态。
阅读全文
摘要:1.什么是CLR公共语言运行时(Comman language Runtime),是一个可由多种编程语言使用的“运行时”。CLR的核心功能:程序集加载,异常处理,线程同步,内存管理等可由CLR的所有语言使用.2.什么是ILIntermediate language中间语言,.net程序在经过编译后就成为IL代码。运行时CLR将IL语言编译成CPU能识别的CRU指令。IL也可以叫做托管代码,IL可以访问CLR所提供的所有功能。3.什么是JIT,它是如何工作的?即时编译器,由CLR调用,负责将IL语言编译成本地CPU指令。工作原理:当程序被第一次调用的时候,CLR会指向包含在CLR内部定义的特殊函
阅读全文
摘要:命名空间的定义:对相关类型进行逻辑性分组,方便程序员使用命名空间来定位一个类型 。比如System.Text命名空间定义了一组执行字符串处理的类型。程序集的定义:程序集是一个或多个类型定义文件及资源文件的集合。命名空间和程序集的关系:1.同一个命名空间的各个类型可能是在不同的程序集中。2.在一个程序集中,也可能包含不同的命名空间。
阅读全文
摘要:CLR最重要的特性之一就是类型安全。CLR想要知道一个对象是什么类型,通过GetType方法可以得到,且该方法是非虚的。类型转化的原则:1.CLR 允许将一个对象转化为它的实际类型或者它的任何基类型。2.将一个对象转化为它的某个派生类时,C#要求只能进行显示转化。关于Is和as:Object obj=new Object();is的使用方法:If(obj is Employee){ Employee em=(Employee)obj;}is的两次对象类型的检查:1.is首先核查obj是否兼容于Employee类型。2.在执行Employee em=(Employee)obj;时,CLR会再次核
阅读全文
摘要:一:所有的类型都从System.Object派生System.Object的公共方法:1.Equals如果两个对象具有相同的值,则返回true.但是如果比较的两个对象指向不同的引用,则返回false.实质上,它表示的是同一性,而非相等性。2.GetHashCode返回对象值的一个哈希码3.Tostring默认返回类型的完整名称(this.GetType.FullName)4.GetTypeSystem.Object受保护类型:1.MerberwiseClone这个非虚方法创建类型的一个新实例,并于新对象的实例字段设与this对象的实例完全一致。返回的是新对象的一个引用。2.Finalize在对
阅读全文
摘要:CLR支持两种程序集:弱命名程序集和强命名程序集两种程序集结构上完全相同,唯一的区别在于强命名程序集用发布者的公钥/私钥对进行了签名,它唯一性的标识了程序集的发布者。私有部署的程序集:是指部署到应用程序基目录或者子目录的程序集。弱命名程序集只能以私有的方式部署公有部署的程序集:是指部署到一些已知位置的程序集,因为CLR在查找程序集的时候,会检查这些已知的位置。一个强命名程序集的4个重要的attributes:1.一个文件名2.一个版本号3.一个语言文化标识4.一个公钥创建强命名程序集的工具SN.exe运行命令:SN -k MyCompany.snk全局程序集缓存(GAC):如果一个程序集要由多
阅读全文
摘要:访问一个资源的步骤:1.调用IL指令newobj,为资源分配内存2.初始化内存,设置资源的初始化状态。类型的实例构造器负责设置初始化状态。3.摧毁资源的状态进行清理4.释放内存托管堆:进程在初始化时,CLR要保留一块连续的地址空间,这块空间最初并没有对应的物理存储空间。这个地址空间就是托管堆。垃圾回收:第一步:标记阶段标记所有的根沿着线程栈,如果发现一个根引用了一个对象,就在这个对象的同步块索引字段上开启第一位。--对象就这样被标记了第二步:压缩阶段已标记的对象是认为是可以通过应用程序到达的对象,未标记的对象是不可到达的。不可到达的对象被认为是垃圾。垃圾回收只在第0代满的时候发生。非托管资源:
阅读全文