2012年1月14日

摘要: 主要是介绍类的实例创建过程,以及类型之间相互转换的知识。一、 创建对象CLR要求用new关键字创建类的实例。例如: Student XiaoJing=new Student(“XiaoJing”,”1986”);那么在创建过程中,究竟发生了什么事呢? ■分配空间。在托管堆中分配该类所需要字节数的内存空间。■初始化对象的附加成员。每个对象有两个附加成员:一是指向类方法表的指针;二是SyncBlockIndex成员,CLR用该字段进行线程同步控制,某些位还可以用作垃圾回收标 记等等。CLR通过这两个成员管理对象实例。■调用构造函数。其间可以传入指定的参数。二、 类型转换C#中,向基类转换直接隐式进 阅读全文
posted @ 2012-01-14 13:15 lihfei89 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 主要包括以下两点: ■Abstract, sealed, virtual, new, override怎么用?■Const 和 readonly好像都表示不能改变的值,有什么区别呢?一、 访问限定类和方法有一些访问限定符,如private,public等。除此之外,还包含一些预定义特性。下面几个你都知道吗? 1. 类的预定义特性■Abstract——抽象类。不能实例化。如果派生类不是抽象类,则必须实例化。■Sealed——密封类。不能做基类被继承。要想既不能实例化又不能被继承? 需要两个步骤: 1.seadled修饰。防止被被继承 ;2.私有化无参构造器。防止实例化自动调用默认无参构造函数。例 阅读全文
posted @ 2012-01-14 12:53 lihfei89 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 1,IL我们称之为高级汇编语言或者中间语言,在我们编写基于.NET框架下的程序(不论是C#、VB或者J#等)在被编译成本地CPU指令前,都将被编译成IL语言,再有CLR对IL语言进行编译和控制比如用VB在控制台应用程序写入如下代码:Sub Main() Console.WriteLine("VB") End Sub 再用C#在控制台应用程序写入如下代码:static void Main(string[] args) { Console.WriteLine("Test"); } 虽然语法完全不一样(除了输出比较相似外),但是如果我们用微软的MSIL反汇编程 阅读全文
posted @ 2012-01-14 12:17 lihfei89 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 1,CLR(Common Language Runtime)公共语言运行时,是可被多种语言所同时使用,并且很多特性可用于所有针对它的开发语言。我们所编写的程序在编译的同时由编译器进行语法的检查和代码分析,然后生成一个托管模块。2,托管模块是由一个标准的32位Microsoft Windows 可执行体(PE32)文件或者是一个标准的64位Microsoft Windows 可执行体(PE32+)文件,以上两种的其中一种再加上CLR头信息(包含使该模块成为托管模块的一些信息,如:CLR的版本,托管模块的方法入口点(我们俗称的Main方法等))再加上元数据(这里的元数据并不是我们的源代码文件,是每 阅读全文
posted @ 2012-01-14 12:02 lihfei89 阅读(540) 评论(0) 推荐(0) 编辑

导航