《Visual C# .NET 简介》由会员分享,可在线阅读,更多相关《Visual C# .NET 简介(47页珍藏版)》请在金锄头文库上搜索。
1、第1章 Visual C# .NET 简介 主要内容l.NET Framework2.0介绍 lVisual C# .NET2005程序设计语言的优点 lVisual C# .NET2005平台的展示1.1 NET Framework2.0介绍l目前,.NET Framework的主流版本是2.0 ,3.0版本已经推出,但还未被 广泛使用,当前基于.NET平台的软件开发还是主要集中在2.0版本上的。l.NET Framework 是微软为开发应用程序创建的一个富有革命性的新平台。.NET Framework发布的第一个版本是运行在Windows操作系统上的,以后随着技术的成熟与更新,其余的操作
2、系统像Linux、FreeBSD,甚至个人数字助手(PDA)类设备,都有运行在其上的.NET Framework版本。 1.1NET Framework2.0介绍l.NET Framework 是微软为开发应用程序创建的一个富有革命性的新平台。.NET Framework发布的第一个版本是运行在Windows操作系统上的,以后随着技术的成熟与更新,其余的操作系统像Linux、FreeBSD,甚至个人数字助手(PDA)类设备,都有运行在其上的.NET Framework版本。 1.1 NET Framework2.0介绍l.NET Framework是.NET 的核心部分。.NET 应用程序运行
3、时所需的所有核心服务都是由.NET Framework提供的。.NET Framework的核心是公共语言运行时CLR,另外还包括了.NET框架类库。 1.1 NET Framework2.0介绍l.NET Framework主要组成部分以及与Visual Studio .NET之间的关系 :1.1 NET Framework2.0介绍l.NET Framework的最底层是公共语言运行时CLR。它是.NET Framework的核心,也是其关键的功能引擎。CLR为所有语言和环境提供了一个通用基础,使得跨语言集成成为可能。CLR还负责内存的分配和管理,代码的即时编译,代码的装载,对象的引用计数
4、,以及垃圾回收等操作。 1.1 NET Framework2.0介绍lCLR之上是.NET Framework的基本类库是Base Class Library(BCL)。BCL实现了运行时的各种功能并通过各种名字开发空间为开发者提供了所需的各种高级服务。例如,Collections名字空间包括了链表、哈希表等集合类型;System.IO名字空间就包含了输入/输出服务;BCL是.NET 语言共享的标准类库,任何遵从.NET语言的都可以使用它,这些服务都在.Net框架的控制之下,为所有的语言提供了统一的类库支持。 1.1 NET Framework2.0介绍l.NET支持多种程序语言,常见的有Vi
5、sual C#.NET、Visual C+、Visual Basic等。.NET 架构至少默认支持Visual Basic.NET与Visual C#.NET两种程序语言。 1.2 Visual C#.NET以及C# 2.0新增的功能1.2.1 Visual C#.NET介绍l微软对C#的定义是:“一种类型安全、现代、简单,由C和C+衍生出来的面向对象的编程语言,它是牢牢根植于C和C+语言之上的,并可立即被C和C+的使用者所熟悉。Visual C#.NET的目的就是综合Visual Basic的高生产率和C+的行动力”。 1.2.1 Visual C#.NET介绍l 使用Visual C#.N
6、ET开发应用程序比使用C+简单,因为其语法比较简单。但是,Visual C#.NET是一种强大的语言,在C+中能完成的任务利用Visual C#.NET也能完成。如前所述,Visual C#.NET中与C+比较高级的功能等价的功能(例如直接访问和处理系统内存),只能在标记为“不安全”的代码中使用。 1.2.1 Visual C#.NET介绍lVisual C#.NET,是一种现代的面向对象的程序开发语言,它使得程序员能够在新的微软.NET平台上快速开发种类丰富的应用程序。.NET 平台提供了大量的工具和服务,能够最大限度地发掘和使用计算及通信能力。lVisual C#.NET中有声明新的类及其
7、方法和性质的关键字,还含有实现面向对象编程的三大支柱:封装、继承和多态的关键字。 1.2.1 Visual C#.NET介绍l在Visual C#.NET中,与类的定义有关的一切都可在声明本身中找到。C#的类定义并不需要独立的头文件或IDL(接口定义语言)文件。而且,Visual C#.NET支持新的XML风格的内嵌文档,大大简化了软件的在线和印刷品参考文档的制作工作。 1.2.1 Visual C#.NET介绍lVisual C#.NET还支持接口(Interface),一种与其所指定的服务的类订立合同(Contract)的方式。在Visual C#.NET中,类只能从一个父类继承,但可以实
8、现多个接口。在实现接口时,C#类实际上也承诺了要提供接口所规定的功能。1.2.1 Visual C#.NET介绍lVisual C#.NET还提供了对结构体(Struct)的支持,但此概念的含义与C+有显著不同。C#中,结构体是有严格限制的轻量级类型,实例化时比传统的类对操作系统和内存的需求都小得多。结构体不能从类继承,也不能被类继承,但它可以实现接口。 1.2.1 Visual C#.NET介绍lVisual C#.NET提供了面向组件的特性,如属性(Property)、方法、事件和称为特性信息(Attribute)的声明性结构。面向组件编程是通过CLR将元数据(Metadata)与类的代码
9、一起保存而实现的。 l程序集(Assembly)是文件的集合,对编程人员而言就是DLL或者EXE文件。在.NET 中,程序集是重用、版本协调、安全性和部署的基本单位。CLR提供了大量处理程序集的类。 1.2.2 C# 2.0 新增的功能C#2.0新增的功能主要体现在如下方面:l泛型泛型:C#2.0中添加了一些泛型类型,使得程序员能够实现程度很高的代码重用,获得更高的集合类性能。泛型类型只存在arity上的不同。也可以将参数强制为特定的类型。l迭代器迭代器:迭代器使得规定foreach循环将如何访问集合的内容变得更加容易。1.2.2 C# 2.0 新增的功能l分部类分部类:分部类型定义允许将单个
10、类型(比如某个类)拆分为多个文件。Visual Studio 设计器使用此功能将它生成的代码与用户代码分离。l可空类型可空类型:可空类型允许变量包含未定义的值。在使用数据库和其他可能包含有具体值的元素的数据结构,可以使用可空类型。1.2.2 C# 2.0 新增的功能l匿名方法匿名方法:现在,可以将代码块作为参数来传递。在本应使用委托的任何地方,都可以使用代码块来取代,不需要定义新的方法。l命名空间别名限定符命名空间别名限定符:命名空间别名限定符 (:) 对访问命名空间成员提供了更多控制。global:别名允许访问可能被代码中的实体隐藏的根命名空间。1.2.2 C# 2.0 新增的功能l静态类静
11、态类:若要声明那些包含不能实例化的静态方法的类,静态类就是一种安全而便利的方式。C# 1.2 版要求将类构造函数定义为私有的,以防止类被实例化。l外部程序集别名外部程序集别名:通过Extern关键字的这种扩展用法引用包含在同一程序集中的同一组件的不同版本。 1.2.2 C# 2.0 新增的功能l属性访问器可访问性属性访问器可访问性:现在可以为属性的get和set访问器定义不同级别的可访问性。l委托中的协变与逆变委托中的协变与逆变:现在传递给委托的方法在返回类型和参数方面可以具有更大的灵活性。1.2.2 C# 2.0 新增的功能l如何声明、实例化和使用委托如何声明、实例化和使用委托:方法组转换为
12、声明委托提供了一种更简单的语法。l固定大小的缓冲区固定大小的缓冲区:在不安全的代码块中,现在可以声明包含嵌入数组的固定大小结构。1.2.2 C# 2.0 新增的功能l友好程序集友好程序集:程序集可以提供对其他程序集的非公共类型的访问。l内联警告控制内联警告控制:#pragma 警告指令可用于禁用和启用某些编译器警告 lvolatile:现在可以将volatile关键字应用于IntPtr和UIntPtr。1.2.2 C# 2.0 新增的功能 另外,C#2.0版本的编译器引入了下列加内容和更改内容:l/errorreport选项选项:可用于通过Internet向Microsoft报告内部编译器错误
13、。l/incremental选项:选项:已移除。l/keycontainer和和/keyfile选项:选项:支持指定加密密钥。1.2.2 C# 2.0 新增的功能l/langversion选项:选项:可用于指定与特定语言版本的兼容性。l/linkresource选项:选项:包含附加选项。l/moduleassemblyname选项:选项:使您可以生成 .netmodule 文件并访问现有程序集中的非公共类型。1.2.2 C# 2.0 新增的功能l/pdb选项:选项:指定 .pdb 文件的名称和位置。l/platform:使您可将 Itanium 系列 (IPF) 和 x64 结构作为目标平台。
14、l/pragma warning:用于在代码中禁用或启用单个警告。1.3 Visual C#.NET语言的特点 Visual C#.NET语言的特点可以归结为以下几种:l简洁的语法l精心地面向程序设计l与Web的紧密结合l完整的安全性与错误处理l版本处理技术l灵活性与兼容性 1.3.1 简洁的语法 l在默认的情况下,Visual C#.NET的代码在.NET框架提供的“可操控”环境下运行,不允许直接内存操作。这与C+不同,C+中会出现大量的“-”“:”操作符,这些在Visual C#.NET中已经不再出现,Visual C#.NET只支持一个“”,对于我们来说,现在需要理解的一切仅仅是名字嵌套
15、而已。 1.3.2 精心地面向对象设计 lVisual C#.NET语言具有面向对象的语言所应有的一切特性:封装、继承、多态,这并不出奇。然而,通过精心地面向对象设计,从高级商业对象到系统级应用,Visual C#.NET是建造广泛组件的最佳选择。 1.3.2 精心地面向对象设计l在Visual C#.NET的类型系统可分为值类型和引用类型,引用类型是对象,值类型可通过一个叫做装箱与拆箱的机制来完成与引用类型的转换操作,这在以后的章节中将进行更为详细的介绍。 1.3.2 精心地面向对象设计lVisual C#.NET中只允许单继承,即每个类只允许有一个父类(亦称基类),从而避免了类型定义的混乱
16、。同时,Visual C#.NET不存在全局函数、全局变量,也不存在全局常数。所有的东西,都必须封装在一个类之中,这样的好处是,代码将有更好的可读性,并且命名冲突的问题也迎刃而解。 1.3.3 与Web的紧密结合lWeb是现今编程的一大趋势与潮流,.NET中新的程序开发模型越来越多的解决方案需要与Web标准相结合、相统一,例如超文本标记语言(Hypertext Markup Language,HTML)和XML。由于历史的原因,现存的一些开发工具不能与Web紧密地结合。SOAP的使用使得Visual C#.NET克服了这一缺陷,大规模深层次的分布式开发从此成为可能。l由于有了Web服务框架的帮
17、助,对程序员来说,网络服务看起来就像是C#的本地对象。程序员们能够方便地为Web服务,并允许它们通过Internet被运行在操作系统上的任何语言所调用。举个例子,XML已经成为网络中数据结构传送的标准,为了提高效率,Visual C#.NET允许直接将XML数据映射为结构。这样就可以有效地处理各种数据。 1.3.4 完全的安全性与错误处理l语言的安全性与错误处理能力,是衡量一种语言是否优秀的重要依据。任何人都会犯错误,即使是最熟练的程序员也不例外:忘记变量的初始化,对不属于自己管理范围的内存空间进行修改,。这些错误常常产生难以预见的后果。一旦这样的软件被投入使用,寻找与改正这些简单错误的代价也
18、是让人难以忍受的。Visual C#.NET的先进设计思想可以消除软件开发中的许多常见错误,并提供了包括类型安全在内的完整的安全性能。为了减少开发中的错误,Visual C#.NET会帮助开发者通过更少的代码完成相同的功能,这不但减轻了编程人员的工作量,同时更有效地避免了错误的发生。 1.3.4 完全的安全性与错误处理l.NET运行库提供了代码访问安全特性,它允许管理员和用户根据代码的ID来配置安全等级。当应用程序执行时,运行库将自动对它进行计算,然后给他一个权限集。根据应用程序获得的权限不同,应用程序或者正常运行,或者发生安全性异常,计算机上的本地安全设置最终决定代码所收到的权限。内存管理中
19、的垃圾收集机制减轻了开发人员对内存管理的负担。.NET平台提供的垃圾收集器(Garbage Collection,GC)将负责资源的释放与对象撤销时的内存清理工作。 1.3.4 完全的安全性与错误处理l变量是类型安全的。Visual C#.NET中不能使用未初始化的变量,对象的成员变量由编译器负责将其置为0,当局部变量未经初始化而被使用时,编译器将做出提醒;Visual C#.NET不支持不安全的指向,不能将整数指向引用类型,例如对象,当进行下行指向时,Visual C#.NET将自动验证指向的有效性;Visual C#.NET中提供了边界检查与溢出检查功能。 1.3.5 灵活的版本处理技术l
20、Visual C#.NET中提供内置的版本支持来减少开发费用,使用Visual C#.NET将会使开发人员更加轻易地开发和维护各种商业应用。l 升级软件系统中的组件(模块)是一件容易产生错误的工作。在代码修改过程中可能对现存的软件产生影响,很有可能导致程序的崩溃。为了帮助开发人员处理这些问题,Visual C#.NET在语言中内置了版本控制功能。例如:函数重载必须被显示地声明,而不会像在C+或者Java中经常发生的那样不经意地被进行,这可以防止代码级错误和保留版本化的特性。另一个相关的特性是接口和接口继承的支持。这些特性可以保证复杂的软件可以被方便地开发和升级。 1.3.6 灵活性和兼容性l在
21、简化语法的同时,Visual C#.NET并没有失去灵活性。尽管它不是一种无限制的语言,比如:它不能用来开发硬件驱动程序,在默认的状态下没有指针等等,但是,在学习过程中你将发现,它仍然是那样的灵巧。l如果需要,Visual C#.NET允许你将某些类或者类的某些方法声明为非安全的,这样一来,你将能够使用指针,并且调用这些非安全的代码不会带来任何其他的问题。此外,它还提供了委托(Delegate)来模拟指针的功能。再比如说,Visual C#.NET不能支持类对多个类的继承,但是可以通过对多个接口的继承,实现这一功能。l正是由于其灵活性,C#允许与C风格的需要传递指针型参数的API进行交互操作,
22、DLL的任何入口点都可以在程序中进行访问。Visual C#.NET遵守.NET公用语言规范(Common Language Specification,CLS),从而保证了Visual C#.NET与其他语言组件间的互操作性。元数据(Metadata)概念的引入既保证了兼容性,又实现了类型安全。 1.4 Visual C# .NET开发环境介绍 Visual C# .NET 2005的界面 Visual C# .NET 2005的界面l在上页的开发环境界面上,分布着菜单栏 、标题栏 、工具栏按钮 、代码和文本编辑器 、类视图窗口和解决方案资源管理器 、属性窗口 ,具体的可对照教材以及环境窗口
23、检索下。1.5 第一个C#程序 l下面举一个简单的C#例子(控制台应用程序): 首先启动Visual C# .NET 2005,选择新建项目,在模版中选择控制台应用程序,如下图: 新建一个控制台应用程序程序的代码 程序的代码如下所示:lusing System;lnamespace HelloCSharpll class Programl l static void Main(string args)l l Console.WriteLine(HelloCSharp);l Console.ReadLine();l l l运行结果 1.7 小结 l本章简要介绍了.NET Framework,并且对C#语言的特点进行了总结与描述。由于本章主要是面向许多刚刚入门的读者来写的,所以详细地讲解了如何顺利编写第一个CSharp程序“Hello-CSharp”。而“Hello-CSharp”程序是熟悉一切计算机编程环境的最简洁的路径,初级的读者们并不需要对这个程序作太多的研究,因为它毕竟只是熟悉一个编程环境的过程而已,而学习CSharp语言更重要的则是我们后面将要介绍的内容。 谢谢!