由于qinghu的极力推荐,这么些日子以来,没事的时候,我就拿出那本《.net框架程序设计》来看。到现在,基本上,已经翻过一遍了。回头再翻翻,确有一番感触在心头,拿出这些感触来,和大家共享,也希望能够得到大家的指导。
以前,在看一本讲述c#语法的小册子的时候,书上说,我们的程序设计其实就是对类型的设计。当时觉得很惊讶,我们那么多的眼花缭乱,纷繁负责的应用,岂是用一个“类”就可以搞定的?将信将疑的我拿这个问题去向qinghu请教,没想到,他语气十分肯定的说:“那当然啦!哪里还有类不能干的事?类中封装数据和方法,所有的应用不就是对数据的存取,对方法的调用吗?”当时听了他一番解释,觉得确实在理,但对这个观点还是缺乏感触,至少缺乏共鸣。
然,看完《.net框架程序设计》,我的脑海中,确反反复复的浮现这个观念。尽管网上对这本书的评价是更多的是在讲述CLR原理(是的,尽管书名叫做《.net框架程序设计》,但这本书没有给你讲述.net Framework中的各种类库以及类中的各种方法,也就是说不是一本API方面的书,而是一本讲述运行机理的书,实际上,这本书的第二版就不叫做《.net 2.0框架程序设计》,而叫做《CLR 2.0》,讲述.net framework2.0下的CLR),我也认同这个观念,但是就我个人最深的体会确是作者围绕以类型设计为主体展开的叙述。除第一部分从宏观上讲述了.net框架的基本原理外,从第二部分开始,作者就着力在类型上:
第二部分《类型与通用语言运行时》,主要讲述类型的基础知识,包括类型之间的转换,基本类型(值类型和引用类型)以及所有类型的基类型---system.object。
第三部分,《类型设计》,讲述了类型中可以定义的内容,也就是类型成员,包括常数,字段,属性,方法,事件。 实际上,就我现在的认识来说,我认为属性和事件是不应该和字段和方法放在同一个级别上的,也就是说,类型成员应该来说,其实就是只有数据成员和方法成员。因为属性是只不过是方法上的“字段包装”。如果说,类封装了数据和操作,那么,属性就是在类的内部再定义一层封装,在这层封装,同样封装了字段和方法(说明:不一定是封装类中定义某一个字段,比如,在get方法中返回的是某几个字段的总和),编译过后,也确实就是方法(get和set)。而事件,实际上经过编译之后,实际上成了一个三个东西:一个字段(一个委托对象),两个方法(一个对委托对象注册事件处理程序,另一个则是注销。说明:这里仅只同步调用)。 当然,站在程序员的角度,说类型成员中包括常数,字段,属性,方法,事件更直接,因为我们确实是直接在类里面定义属性和事件。
第四部分,则讲述了一些基本类型,包括string(还有stringBuilder),枚举,数组,接口,特性和委托。
第五部分,则讲述了对类型的管理,异常处理和垃圾回收,当然还有反射等等。
从编排体系上可以看出,作者始终围绕类型来讲,这也意味着,整个.net framework就是一大堆类型的堆砌。是的,.net的首要目的不就是提供给我们“一致的面向对象的编程模型”吗?面向对象编程不就是将int,string等等基本的数据类型,以及顺序,条件,循坏3种流程控制结构通过类型进行封装,然后,通过对类型的层层叠叠的组合,继承来实现对现实世界各种对象的模拟和抽象吗?
呜呼,普天之下,莫非对象,而对象莫不以“类”聚。是故,当今“类”者,横行天下而无所顾忌也!