02 2018 档案
摘要:这里我们讨论的两个东西:托管堆和垃圾回收器,前者是负责创建对象并控制这些对象的生存周期,后者负责回收这些对象。 一、托管堆分配资源 CLR要求所有的对象都从托管堆分配。进程初始化时,CLR划出一个地址空间区域作为托管堆。CLR还要维护一个指针P,该指针指向下一个对象在堆中的分配位置。 那么我们进一步
阅读全文
摘要:一、初识特性 特性(attribute)是被指定给某一声明的一则附加的声明性信息。 设计类型的时候可以使用各种成员来描述该类型的信息,但有时候我们可能不太愿意将一些附加信息放到类的内部,因为这样,可能会给类型本身的信息描述带来麻烦或误解。我们想为类型、属性、方法及返回值附加额外的信息,这些附加信息可
阅读全文
摘要:我们知道,值类型的变量永远不会为null,但在数据库中的一个列可能允许值为空,但在CLR中没有办法将INT32值表示成null. 为了解决这个问题,CLR中引入了可空值类型,为了理解它是如何工作的,先来看看FCL中定义的system.Nullable<T>结构。 一、可空值类型的代码 public
阅读全文
摘要:关于C#中的类型 在C#中类型分为值类型和引用类型,引用类型和值类型都继承自System.Object类,几乎所有的引用类型都直接从System.Object继承,而值类型具体一点则继承System.Object的子类,即继承System.ValueType。而String类型却有点特别,虽然它属于
阅读全文
摘要:以前在用到接口时,从来没注意到接口分为隐式实现与显示实现。昨天在浏览博客时看到相关内容,现在根据自己的理解记录一下,方便日后碰到的时候温习温习。 通俗的来讲,“显示接口实现”就是使用接口名称作为方法名的前缀;而传统的实现方式称之为:“隐式接口实现”。费话不说,例子如下: interface IAni
阅读全文