Programming C# 学习笔记(一) C#与.NET框架

本文介绍了C#语言的特点及.NET框架的组成,包括C#的关键特性和.NET框架的公共语言运行时(CLR)及框架类库(FCL)。同时讲解了程序如何通过中间语言(MSIL)在CLR中执行。

小序:
     从今天起我要开始写关于技术的博客了,虽然技术和写作水平还不高,不过正因此更要锻炼下,呵呵

如有错误之处,请大家批评指正。

     我在博客园里定下了一个目标:希望我的博客能给看到的人带来收获。我为此而努力


 

正文:

      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是否编译过

     如果没编译过,则进行编译并生成高效的机器代码;

     如果编译过,则重用该编译过的代码;

     只在需要的时候进行编译,程序运行时会越来越快。

     

尾注:

     今天算是完成了一篇,呵呵,语句基本是官方的,比较像是总结,主要因为怕用自己的话不当给人以误导,以后要加油喽!

转载于:https://www.cnblogs.com/yb1124/archive/2008/10/17/1313593.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值