一:体系结构 Framework平台体系结构[C#] 2栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#] 3一、 栈和托管堆 4二、类型层次结构 5三、引用类型 6四、预定义的引用类型 7五、强制类型转换 8六、装箱和拆箱(boxing/unboxing) 9二:方 法 10覆盖与重载(override/overload)[C#] (overload&override) 21抽象方法和虚方法的区别[C#] 22深入剖析C#的多态[C#] 22一、什么是多态 23二、实现多态 24三:委托与事件 26委托和事件[C#] 26引言 27将方法作为方法的参数 27将方法绑定到委托 32事件的由来 35事件和委托的编译代码 41委托、事件与Observer设计模式 43委托模型和事件模型[C#] 件 61索引器(indexer)[C#] ? ? ? 68反射(Reflection)[C#] 75四:字符串 80五:类与接口 82抽象类和接口的区别[C#] 82一、抽象类 83二、接 口 85三、抽象类和接口 87四、其它文章 89C#[C#] 92静态类的限制 93六:工具集使用 94MSIL反汇编程序()[C#] 94一:Framework平台体系结构[C#]C#Framework上运行,它是Windows的一个必要组件,包括一个称为公共语言运行时(CLR)的虚拟执行系统和一组统一的类库。CLR是Microsoft的公共语言基础结构(CLI)的一个商业实现。CLI是一种国际标准,是用于创建语言和库在其中无缝协同工作的执行和开发环境的基础。用C#编写的源代码被编译为一种符合CLI规范的中间语言(IL)。IL代码与资源(如位图和字符串)一起作为一种称为程序集的可执行文件存储在磁盘上,。程序集包含清单,它提供关于程序集的类型、版本、区域性和安全要求等信息。执行C#程序时,程序集将加载到CLR中,这可能会根据清单中的信息执行不同的操作。然后,如果符合安全要求,CLR执行实时(JIT)编译以将IL代码转换为本机机器指令。CLR还提供与自动垃圾回收、异常处理和资源管理有关的其他服务。由CLR执行的代码有时称为“托管代码”,它与编译为面向特定系统的本机机器语言的“非托管代码”相对应。下图演示了C#源代码文件、基类库、程序集和CLR的编译时与运行时的关系。Framework的一个关键功能。因为由C#编译器生成的IL代码符合公共类型规范(CTS),因此从C#生成的IL代码可以与从VisualBasic、VisualC++、VisualJ#版本或者其他20多种符合CTS的语言中的任何一种生成的代码进行交互。语言编写的多个模块,并且类型可以相互引用,就像它们是用同一种语言编写的。除了运行时服务,.NETFramework还包含一个由4000多个类组成的内容详尽的库,这些类被组织为命名空间,为从文件输入和输出到字符串操作、到XML分析、到Windows窗体控件的所有内容提供多种有用的功能。典型的C#Framework类库广泛地处理常见的“日常”任务。栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#]栈和托管堆 通用类型系统(CTS)区分两种基本类型:值类型和引用类型。它们之间的根本区别在于它们在内存中的存储方式。.NET使用两种不同的物理内存块来存储数据—栈和托管堆。如下图所示: 值类型总是在内存中占用一个预定义的字节数(例如,int类型占4个字节,而string类型占用的字节数会根据字符串的长度不同而不同),当声明一个值类型变量时,会在栈中分配适当大小的内存(除了引用类型的值类型成员外,如类的int字段),内存中的这个空间用来存储变量所含的值。.NET维护一个栈指针,它包含栈中下一个可用内存空间的地址。当一个变量离开作用域时,栈指针向下移动被释放变量所占用的字节数,所以它仍指向下一个可用地址。 引用变量也利用栈,但这时栈包含的只是对另一个内存位置的引用,而不是实际值。这个位置是托管堆中的一个地址。和栈一样,它也维护一个指针,包含堆中下一个可用内存空间的地址。但是,堆不是先入后出的,因为对对象的引用可在我们的程序中传递(例如,作为参数传递给方法调用),堆中的对象不会在程序的一个预定点离开
基础知识 来自淘豆网m.daumloan.com转载请标明出处.