随笔 - 136  文章 - 0  评论 - 36  阅读 - 17万 
06 2011 档案
可空类型
摘要:为理解可空类型是如何工作的,我们来看一看System.Nullable<T>类,它是在FCL中定义的。[Serializable, StructLayout(LayoutKind.Sequential)]public struct Nullable<T> where T : struct{ //这两个字段表示状态 private Boolean hasValue = false; //假定null internal T value = default(T); //假定所有比特都是零 public Nullable(T value) { this.value = valu 阅读全文
posted @ 2011-06-25 18:30 辛勤的代码工 阅读(746) 评论(1) 推荐(0) 编辑
泛型接口、泛型委托、泛型方法、泛型约束
摘要:泛型接口 没有泛型接口,每次试图使用一个非泛型接口(如IComparable)来操纵一个值类型时,都会进行装箱,而且会丢失编译时的类型安全性。这会严重限制泛型类型的应用。所以,CLR提供了对泛型接口的支持。一个引用类型或值类型为了实现一个泛型接口,可以具体指定类型实参;另外,一个类型也可以保持类型实参的未指定状态来实现一个泛型接口。来看一些例子: 以下泛型接口定义是作为FCL的一部分发布的:public interface IEnumerable<T> : IDisposable, IEnumerator { T Current { get; }} 下面这个示例实现了上述泛型接口, 阅读全文
posted @ 2011-06-23 23:14 辛勤的代码工 阅读(1688) 评论(0) 推荐(1) 编辑
泛型类型
摘要:“泛型”(generic)是公共语言运行库(CLR)和编程语言提供的一种特殊机制,它支持另一种形式的代码重用,即“算法重用”。 大多数算法都封装在一个类型中,CLR允许创建泛型引用类型和泛型值类型,但不允许创建泛型枚举类型。此外,CLR还允许创建泛型接口和泛型委托。少数情况下,一个方法可能封装了一个有用的算法,所以CLR允许创建一个引用类型、值类型或接口中定义的泛型方法。 泛型为开发人员提供了以下优势: 1. 源代码保护:使用一个泛型算法的开发人员不需要访问算法的源代码。 2. 类型安全性:将一个泛型算法应用于一个特定的类型时,编译器和CLR能理解开发人员的意图,并保证只有与指定数据类型兼容. 阅读全文
posted @ 2011-06-21 23:55 辛勤的代码工 阅读(2252) 评论(0) 推荐(0) 编辑
CLR的整个类型对象及其工作方法
摘要:下图展示了CLR加载一个进程,在这个进程中,可能存在多个线程。当一个线程创建时,它会分配到一个1MB大小的堆栈,这个堆栈空间用于向方法传递实参,并用于存储在方法内部定义的局部变量。堆栈是从高位内存发址向低位内存地址构建的。在图中,线程执行了一些代码,它的堆栈上已有一些数据。 在一个最基本的方法中,应该包含一些“开场白(prologue)”代码,它们负责在方法开始做它的工作前对其进行初始化。另外,还应包含一些“收场白(epilo-gue)"代码,它们负责在方法完成工作后对其进行清理,以返回调用者。现在,假定线程执行的代码要调用M1方法。当该方法始执行时,它的“开场白”代码从线程的堆栈中 阅读全文
posted @ 2011-06-19 22:45 辛勤的代码工 阅读(1093) 评论(1) 推荐(1) 编辑

点击右上角即可分享
微信分享提示