随笔 - 410
文章 - 0
评论 - 519
阅读 -
147万
04 2012 档案
读<<CLR via C#>>总结(6) 详谈实例构造器和类型构造器
摘要:一,实例构造器(构造函数) 实例构造器是允许将类型的实例初始化为良好状态的一种特殊方法,它在类的每个新实例创建的时候执行。 代码如下:namespace ConstructorDemo1{ internal sealed class MyClass//字义类 { DateTime TimeOfInstantiation;//声明字段 public MyClass()//构造函数 { TimeOfInstantiation = DateTime.Now;//初始化字段 } } class P...
阅读全文
读<<CLR via C#>>总结(5) 如何合理使用类型的可见性和成员的可访问性来定义类
摘要:一,类的可见性 类有两种可见性。 1,public,对所有程序集中的代码可见。 2,internal,仅对定义它的程序集中的代码可见,对其它程序集中的代码不可见。 注:如果没有显式声明类的可见性,C#编译器默认设置为internal。二,类的成员的可访问性 类的成员共有六种可访问性,这里总结了最常用的三种可访问性修饰符,它们的限制性从上到下,限制性由最大到最小排列。 1,private,只能由定义它的类型中的方法访问。 2,protected,与private相同,除了它允许它的派生类中的方法访问。 3,public,没有访问限制。 注:如果没有显式声明成员的可访问性,C#编...
阅读全文
读<<CLR via C#>>总结(4) 值类型的装箱和拆箱
摘要:值类型是比引用类型更"轻型"的一种类型,因为它们不作为对象在托管堆中分配,不会被垃圾回收,也不通过指针来引用。但在许多情况下,都需要获取对值类型的一个实例引用。为了将一个值类型转换成一个引用类型,要使用一个名为装箱(boxing)的机制。一,装箱 装箱即将一个值类型转换成一个引用类型,下面是总结对值类型的一个实例进行装箱时内部发生的事情: 1,在托管堆中分配内存。内存量是值类型的各个字段需要的内存量加上托管堆的所有对象都有的两个额外成员(类型对象指针和同步块索引)需要的内存量。 2,将值类型的字段复制到新分配的堆内存。 3,返回对象的地址(或称指针)。现在,这个地址是对一个
阅读全文
读<<CLR via C#>>总结(3) 值类型和引用类型的区别
摘要:下面是FCL中值类型和引用类型的区别,用表格总结如下:值类型引用类型内存分配线程栈托管堆垃圾回收不考虑考虑表示形式未装箱和已装箱总是已装箱是否可以作为基类不能作为基类,不能有虚方法可以作为基类,也能有虚方法初始化的值0Null复制逐字段复制(深拷贝)只复制内存地址(浅拷贝)操作时影响只影响当前对象,不会影响另一个对象这个引用所对应的所有对象 下面是一个实际的例子详细说明了值类型和引用类型在内存中的布局,代码如下: namespace ValueTypeDemo1{ //值类型 struct SomeVal { public int x; } ...
阅读全文