【Asp.net精品源码栏目提醒】:网学会员Asp.net精品源码为您提供C#语言01-DotNet和CSharp简介 - 其它资料参考,解决您在C#语言01-DotNet和CSharp简介 - 其它资料学习中工作中的难题,参考学习。
C.NET程序设计第1章 .NET和C#简介 1.1 .NET 概述 .NET首先是一个开发平台,它定义了一种公用 语言子集(Common Language Sbuset CLS),这是一种为符合其规范的语言与类库之 间提供无缝集成的混合语言,.NET统一了编程类 库,提供了对下一代网络通信标准,可扩展标记 语言XML的完全支持,使应用程序的开发变得 更容易,更简单。
理解.NET 最简单的方式是把它看作是执行代码的环境。
.NET管理代码的执行——启动代码、给它赋予相应的权限、为它分配内存以存储其数据,帮助释放某些不再需要的内存和资源等。
除了执行这些任务外,.NET还要使用一个非常复杂的类库——所谓的.NET基类,以便在Windows上执行大量的任务。
对这一任务 .NET承担了双重角色:管理代码的执行和为代码提供服务。
如前所述,.NET位于代码和Windows之间,可以提供需要的服务。
在解释.NET程序执行时发生的情况之前,先定义一下.NET组件和我们需要的其他术语。
1.2 和.NET相关的几个概念.NET运行库时:也称为公共语言运行时Common Language Runtime CLR,它实际管理代码。
它可以处理加载程序、运行程序的代码,以及提供所有支持服务的代码。
跟VB6运行库MSVBVM60.DLL功能类似。
受管制的代码:在.NET环境中运行的任何代码都称为受管制的代码Managed code。
.NET外部的其他代码也运行在Windows上,这些代码称为未受管制的代码unmanaged code。
中间语言IL:在.NET运行库加载和运行代码时,这种语言确定代码的位置。
在编译受管制的代码时,编译器实际上使用中间语言,CLR处理代码执行前的最后编译阶段。
IL可以非常快速地编译为内部的机器代码,同时支持.NET的功能。
公共类型系统CTS:为了实现语言的互操作性,必须有一组各种语言都认可的基本数据类型,这样才能对所有语言进行标准化处理。
CTS就提供了这个功能,还提供了定义定制类的规则。
元数据:是一组数据表,保存的是编译后的IL代码所使用的和引用的类型信息。
其中,包括类型类和它们成员的名称、参数、对其他类型一些成员可以作为返回或输入类型使用,或者可以在过程中进行实例化的引用,以及其他细节。
在实践过程中,您可以将它看作是COM环境中使用的IDL文件和类型库的—个极度扩展的版木虽然元数据比它们要大得多,但是元数据装载到IL代码上以后,就不再需要在其他任何地方再进行任何的注册。
.NET基类:这是一个扩展的类库,它包含预先写好的代码,执行Windows上的各种任务,例如显示窗口和窗体、访问Windows基本服务、读写文件、访问网络和Internet和访问数据源。
装配件:装配件是存储编译好的受管制的代码的单元。
它与传统的可执行文件或DLL有些相似,但具有自我描述的重要功能,包括所谓的元数据,它给出了装配件及在其中定义的所有类型、方法等细节。
装配件可以是私有只能用于一个应用程序,也可以是共享的可以用于Windows上的所有应用程序。
公共语言规范CLS:这是确保代码可以在任何语言中访问的最小标准集合。
所有用于.NET的编译器都应支持CLS。
CLS构成了可以在.NET和IL中使用的功能子集,代码也可以使用CLS外部的功能。
如果非CLS功能在代码所在装配件的外部是可见的,那么这些功能就不能在某些语言中使用。
反射:因为装配件完全是自我描述的,因此在理论上可以编程访问装配件元数据。
实际上一些基类就是为达到此目的而设计的。
这种技术称为反射也许因为它在本质上意味着程序可以使用这个工具检查白己的元数据。
Just In Time JIT编译: 这个术语用于表示执行编译过程的最后阶段,即从中间语言转换为内部机器代码。
其名称的来源是部分代码是按需要即时编译的。
无用存储单元收集:这是CLR清理不再需要的内存的方式,应用程序不必负责内存的释放。
名称空间:或称命名空间,是.NET避免类名冲突的一种方式。
名称空间还可以相互嵌套。
例如,大多数用于一般目的的.NET基类位于名称空间System中,基类Array在这个名称空间中,所以其全名是System.Array。
在这里概括一下我们在上面介绍的内容。
下图所示的是程序的编译流程图,展示了一段.NET应用程序代码从最初的编译生成中间语言和元数据,到程序集和它加载的中间语言代码,然后是验证、J1T编译,最后生成用于执行的本地代码。
中间语言和 Class 源代码 编译器 元数据 编译器 EXE或DLL 执行 本机代码 编译器 验证器.NET 框架体系结构 C# VB.NET Jscript 其他语言 通用语言规范CLS Windows Forms
ASP.NET ADO.NET XML IO 线程 安全 其他语言 Framework 类库FCL 公共语言运行时 Windows COM服务1.3 C#语言 C是一种新的面向对象编程语言,专门用于.NET运行时。
C编译器只能生成受管制的代码,也可以使用.NET基类。
C的重要性体现在两个方面: 第一,它是专门为与.NET运行时高度兼容而设计的。
第二,它是一种现代的面向对象语言,在设计它时,Microsoft还学习了其他类似语言的经验,这些类似语言是近20年来面向对象规则得到广泛应用以来开发出来的。
1.4 C与.NET的关系 C就其本身而言只是一种语言,尽管它是用于生成面向.NET环境的代码,但它本身不是.NET的一部分。
一些特性由.NET支持,但C不支持。
而另一些特性C支持,.NET却不支持!比如一些C#异常处理语句就属于这个范围,显然,如果在代码中使用这些C#特性,编译器就把它们转换为.NET支持的特性。
另一个例子是运算符重载。
C允许重载使用一些运算符,例如加号、减号等。
1.5 C与其他语言的比较1)C和VB6的比较 C#和VB6最明显的区别是C#编译为MSIL, 而VB6编译为内部机器代码。
用这两种语言编写 的程序都需要一个运行时来执行,C#运行时的 优点是它允许C#代码与其他语言编写的代码交 互,允许C#代码使用.NET基类提供的丰富功 能。
从特性上看,C# 的面向对象性比VB6高。
例如,VB6缺乏参数化的构造函数、运算符重载 和实现继承性。
从语法上看,C#比VB6更简 洁,允许变量同时声明和初始化,语句可以放 在任意多的代码行上。
2)C#和VB.NET的比较 VB.NET几乎可以完成C能完成的所有任务。
VB.NET不能完成的是内嵌带有指针和其他不安全的C++用法的纯C++代码。
在代码实例和各种广告中,Microsoft强调C#比VB.NET更多,另外,Microsoft计划主要采用C继续以后的开发工作。
公开C标准,让其他开发商也可以开发面向其他平台的C编译器。
3) C和VisualC++的比较 首先,C#只是C++的另一种形式。
可以把普通的C代码内嵌到C#代码的“不安全”块中后面章节介绍如何内嵌。
C比C++的效率更高 C#禁止使用指针和指针算法除了在不安全的代码块 中。
C#删除了预处理器的宏但保留了条件编译和 defined常数。
复杂的宏在以不希望的方式扩展时容 易出现错误。
C要求在引用变量的值之前,必须先显式声明该变量,并用一个初始值进行初始化。
C#使用switch…case语句,为了防止程序员的疏忽,switch语句中的每个case从句都必须有一个闭合的break命令。
C删除了全局函数,迫使用户进行面向对象的编程。
如果只有一个静态成员,那么程序中的每个函数都必须是类的一个成员。
甚至开始的Main函数也定义为一个类的成员。
4 C#和C Builder的比较 Borland的C开发环境CBuilder最著名的一点是把用户界面设计的窗体方式和C++语言结合起来。
后面将会提到,C#也支持窗体。
C#优于C++ Builder的方面是C#拥有.NET运行时提供的语言互操作性。
因为用C Builder编译的程序显示为机器代码,所以它们必须依赖COMService与以其他语言编写的代码交互操作。
5)C和Delphi的比较 Delphi是Borland另一个快速应用程序开发工具,和一个类似于Pascal的专用语言组合在一起。
它依赖于BEGIN和END对来分隔语句块,其语法要比C更迟钝和笨拙。
与C Builder一样,Delphi编译为机器代码,且必须依赖COMServices获得互操作性。
上一篇:
【精品】003指纹识别系统
下一篇:
ASP小区停车管理系统(Access)(含录像)