小序:
从今天起我要开始写关于技术的博客了,虽然技术和写作水平还不高,不过正因此更要锻炼下,呵呵
如有错误之处,请大家批评指正。
我在博客园里定下了一个目标:希望我的博客能给看到的人带来收获。我为此而努力!
正文:
Programming C# 学习笔记(一) C#与.NET框架
2000年7月,那时我小学毕业升到初中,呵呵,我可是以小学第一成绩的升入了天津三中(呵呵,有很大的炫耀成分),这时,就在这时
伟大的语言C#诞生了!!(可是我当时不知道)它是.NET平台很重要的一门语言,继承了许多优秀语言的优点如C++、Java、vb等发展到现
在的C#3.0。
Part One :C#
C#大约有80个关键字和12个内置数据类型,涵盖了结构化、基于组件、面向对象编程的所有支持。
C#的类定义不需要独立的头文件和IDL文件(Interface Definition Language,接口定义语言)。
C#支持新的XML风格的内嵌文档。
C#支持接口,不支持多继承。类只能从一个父类继承,但可以实现多个接口。
C#支持结构体,它是严格限制的轻量级类型,不能从类继承,也不能被类继承,但它可以实现接口。
C#支持委托并提供了完整支持,委托是类型安全的引用类型。
C#提供了面向组件的特性,如属性(property)、事件(event)和性质(attribute)的声明性结构。
面向组件编程是通过CLR将元数据(metadata)与类的代码一起存储而实现的。
1)元数据负责描述类,包括其方法和属性,以及安全要求和其他性质,如是否可以序列化。
2)代码则包含执行功能必需的逻辑流程。
宿主环境只要能够识别类的元数据和代码,不用其他信息就可以使用。
使用C#和CLR,就可以通过attribute来给类添加自定义元数据,也可以用支持反射的CLR类型阅读类的元数据。
代码编译后,就生成了程序集(assembly)。程序集是多个文件的集合。NET中程序集是复用、版本控制、安全性和部署的基本单位。
C#中还可以使用指针,不过需要标记为unsafe(不安全的)关键字,警告CLR的GC在指针所引用的对象释放前不要对其进行回收。
Part Two :.NET框架
.NET框架包括:
1)五种官方语言:C#、VB、Visual C++、Visual J#和JScript.NET。
2)CLR(公共语言运行时)所有语言都用于这个面向对象开发平台
3)大量相关的类库,总称为FCL(框架类库)
NET支持语言无关性和集成性,也就是说可以用C#写的类继承VB写的类,跨越不同的语言继承类、捕获异常、应用多态性。
NET是如何实现语言无关性和集成性的呢?它是通过CTS(Common Type System,公共类型系统),即所有.NET组件
都需遵守的规范,来达到的。CTS支持类、接口、委托等各种通用的观念。
CLS(Common Language Specification,公共语言规范),提供了语言集成必需的一系列规则。它规定了成为.NET语言
的最低要求。
FCL(FrameWork Class Library,框架类库)可以被符合CLS的任何语言使用。
.NET中程序并不是直接编译成为可执行文件,而是先被编译成为MSIL(Microsoft Intermediate Language,微软中间语言)
文件,然后由CLR执行。(CLR是.NET框架最重要的组成部分,它提供了程序的执行环境。CLR中有个虚拟机,和Java很 类似,
CLR负责激活对象,并对其进行安全检查,再将其在内存中布局,执行它们,最后进行垃圾回收)C#生成的MSIL(通常简称为IL)
与其他.NET语言生成的完全相同,IL保存在磁盘的文件里。在运行程序时,IL会使用即时编译器(JIT,Just In Time)再次编译,
这时生成的就是机器代码,可以直接让操作系统处理。
标准JIT编译器是按需(on demand)运行的,JIT足够智能、运行速度极快,能分析IL是否编译过
如果没编译过,则进行编译并生成高效的机器代码;
如果编译过,则重用该编译过的代码;
只在需要的时候进行编译,程序运行时会越来越快。
尾注:
今天算是完成了一篇,呵呵,语句基本是官方的,比较像是总结,主要因为怕用自己的话不当给人以误导,以后要加油喽!