C#大学实用教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章C# 简介

本章主要了解什么是 .NET Framework、什么是C#,并简要介绍Visual Studio 2008和如何学习C#语言。

1.1 什么是.NET Framework

介绍C#之前,必须了解C#运行的环境.NET Framework。

在Windows之前的时代,DOS或者UNIX,都只是提供普通的函数编程接口,所有应用程序都直接调用操作系统的函数接口。Windows刚刚发布的时候,也是通过Windows API提供系统函数调用,当时编写Windows应用程序时也需要紧密研究Windows API。

但这种软件开发的方法属于面向过程的结构化程序设计方式,伴随面向对象程序设计开发技术的成熟,在Windows API上提供一套面向对象程序设计类库,使得编写Windows应用程序变得更为简单。

一时间,Windows上的开发工具,Visual Basic、Visual C++、Delphi、Visual FoxPro、PowerBuilder等都各自提供了一套开发库。虽然这些开发库大大简化了应用程序的编写,我们只需要拖放控件即可实现应用程序的界面设计,但这些开发库各自成为一个体系,相互之间差异颇大,各有特长,应用程序设计人员在开发不同的应用程序时,需要使用不同的开发工具,这就需要重新学习一套库的使用,既浪费时间,也使得项目开发的进度变慢。

如图1-1所示,聪明的工程师们便想到,吸收这些控件库的优点,开发出一套中间库,让所有的开发语言都调用一套相同的库,各种开发语言都使用统一的开发库,这样可以简化开发语言的设计和应用程序的编写。这就是 .NET Framework这套面向对象应用程序库开发的最初目的。

图1-1 .NET Framework所处的中间位置

同时,这套库屏蔽了应用程序和操作系统之间的直接连接,操作系统可以根据自己的需要进化,变得更加稳定、强壮和安全,这样操作系统的开发也可以从这套库的运行中得益。

并且,在开发这套 .NET Framework时充分考虑到未来发展的需要,只要新出现一种开发模式,便在库中添加新的应用程序开发模式即可。这几年,Web网站成为一个火热的新课题,人们就可以轻松地通过ASP.NET运行库,编写差不多的网络类应用程序。这使得人们发现,伴随 .NET Framework而生的C#语言,既能编写控制台应用,又能编写Windows应用,还能编写ASP.NET网站类应用,几乎是一种全能语言。学习好了C#,就可以轻松进入各个领域,这大大减轻了程序员的学习难度,提升了他们的技能空间。

所以,吸收了多种开发语言优点的C#,以非常快的速度普及了。

1.2 什么是C#

21世纪初,Microsoft推出了新一代程序开发环境Visual Studio.NET。为了配合 .NET应用程序的开发,促进 .NET战略的发展,Microsoft同时推出了该环境下的主要编程语言C#(读作C Sharp)。C#语言是针对 .NET框架平台开发的一种新型编程语言,完全建立在.NET框架平台基础之上。Microsoft宣称,C#是开发.NET框架应用程序的最好语言。

1.2.1 C#概述

C#是Visual Studio.NET中包含的一种全新的开发语言。它从C/C++语言发展而来,具有与C/C++语言相似的语法,继承和发扬了C/C++语言的优点。同时,由于是Microsoft公司的产品,它又同Visual Basic一样简单,在创建图形用户界面和事件驱动的应用程序方面的容易程度可以媲美Visual Basic。对于Web开发而言,C#又像Java/C++语言一样,具有强大的功能和灵活性,使用起来更加方便和直观。

C#语言虽然从C/C++语言发展而来,但是它摒弃了C/C++语言中容易出错的指针、多重继承等概念,是一种完全面向对象、类型安全的语言,与使用新的.NET框架的其他许多语言兼容,允许与具有C/C++语言风格的需要传递指针类型参数的API进行交互操作,允许C#语言组件与其他语言组件间的交互操作。C#是一种完全建立在.NET框架平台之上的高级语言,其所有类型都是从 .NET Framework提供的统一类库中派生的,并且所有的功能实现都依赖于这个类库。C#中没有多重继承并且没有模块类。C#中的简单类型仅仅是底层数据类型的直接映射。C#中的类型不是由语言本身确定的,而是由公共类型系统确定的。例如,在C#中,枚举、属性和事件都已内建到语言中,虽然所有面向 .NET Framework的语言都可以使用该框架,但C#是完全针对这个框架的,它可以充分使用这个框架所提供的类、接口和对象。

延伸学习──C#与Java比较

C#语言与Java语言有诸多相似之处,只是在细节上有一些差别。实际上,C#与Java的主要区别不是在语言本身,而是所执行的平台。Java程序需要一个运行环境JRE(Java Runtime Environment)来执行代码,但JRE只限于在Java语言中使用。C#语言也需要一个运行环境CLR(Common Language Runtime),但是CLR提供了对多种语言的支持。Java源代码可以被编译成字节代码的一种中间状态,然后由已提供的虚拟机来执行这些代码。C#代码也被编译成一种中间代码,称为中间语言(IL)。但是IL代码则被传输到由CLR管理的执行进程上,然后通过CLR的JIT编译器编译成本地代码执行。另外,C#语言还提供了一些Java语言中没有的功能,如运算符重载、封箱和装箱以及方法隐藏等。

由于C#语言一开始就是完全按照面向对象的思想来设计的,而且使用的全部是 .NET Framework定义的语法格式,不存在考虑与.NET之前版本兼容的问题。同时,C#语言作为一种高级语言标准,其基本的内部实现形式是公开的,容易被更多种平台接受。因此,C#语言给人的感觉是结构清晰、语法简洁、方便直观和应用广泛。

1.2.2 C#的主要功能

C#是一种最新的、面向对象的编程语言,使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务,来最大程度地开发利用计算与通信领域。正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。

C#的功能主要表现在以下几方面:

⊙ 设计Windows应用程序。

⊙ 自定义Windows控制库。

⊙ 设计控制台应用程序。

⊙ 设计智能设备应用程序。

⊙ 设计ASP.NET Web应用程序。

⊙ 设计ASP.NET Web服务。

⊙ 设计ASP.NET移动Web应用程序。

⊙ 自定义Web控件库。

ASP.NET正是以C#为基础所开发出来的控件、标记。在中间语言的领域里,C#是最具亲和力的一种语言,它拥有C语言和Java语言的主要特点,同时拥有功能强大的函数库和方便的模板等,是目前最理想的语言之一。

1.2.3 C#的主要特点

C#语言几乎综合了目前高级语言的优点,具有以下主要特点。

(1)简洁的语法

C#语言与Java语言一样,使用了统一的操作符,淘汰了C++语言中复杂的表达式和伪关键字,使用最简单、最常见的形式进行描述。

(2)卓越的面向对象设计

C#语言完全按照面向对象的思想来设计,因此具有面向对象所应具有的一切特性,即:封装性、继承性和多态性。

C#语言只允许单继承,即一个类不会有多个基类,从而避免了类型定义的混乱。在C#语言中,每种类型都是一个对象,因此不存在全局函数、全局变量和全局常数等概念。所有常量、变量、属性、方法、索引和事件等都必须封装在类中,从而使代码具有更好的可读性,也减少了发生命名冲突的可能。

(3)与Web的紧密结合

在C#中,对于复杂的Web编程和其他网络编程更像是对本地对象进行操作,从而简化了大规模、深层次的分布式开发。用C#语言构建的组件能够方便地为Web服务,并可以通过Internet被运行在任何操作系统上的任何语言所调用。

(4)完全的安全性和错误处理

语言的安全性和错误处理能力是衡量一种语言是否优秀的重要依据。C#语言可以消除许多软件开发中的常见错误,并提供了包括类型安全在内的完整的安全性能。

在默认情况下,从Internet和Intranet下载的代码都不允许访问任何本地文件和资源;C#语言不允许使用未初始化的变量,并提供了便捷检查和溢出检查等功能。内存管理中的垃圾回收机制大大减轻了开发人员对内存管理的负担。

(5)版本处理技术

C#语言内置了版本控制功能,如对函数重载和借口的处理方式以及特性支持等,从而保证方便地开发和升级复杂的软件。

(6)灵活性和兼容性

在托管状态下,C#语言不能使用指针,而是用委托(Delegate)来模拟指针的功能。如果确实需要在类或者类的方法中使用指针,只需要声明这些内容为非安全即可。另外,虽然C#语言不支持类的多继承,但是可以通过继承接口来实现多继承。

兼容性是指C#语言允许与具有C/C++语言风格的需要传递指针类型参数的API进行交互操作,允许C#语言组件与其他语言组件间的交互操作。

(7)商业过程和软件实现的更好对应

企业的商业计划要付诸现实,必须在抽象的商业过程和实际的软件实现之间建立紧密地对应。大多数语言都很难做到这点。

C#语言允许类型定义的、扩展的元数据。这些元数据可以应用于任何对象。项目构建者可以定义领域特有的属性并把他们应用于任何语言元素,如类、接口等。

总之,C#是一种现代的面向对象语言,使程序员可以快速、便捷地创建基于Microsoft .NET平台的解决方案。这种框架使C#组件可以方便地转化为XML网络服务,从而使任何平台的应用程序都可以通过Internet调用它。C#增强了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误。C#使C/C++程序员可以快速进行网络开发,同时也保持了开发者所需要的强大性和灵活性。

1.3 Visual Studio 2008简介

Visual Studio 2008是一套完整的开发工具集,其中的C#是使用最广泛的开发语言,用于开发ASP.NET Web应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++、Visual C#和Visual J#都使用相同的集成开发环境(Integrated Development Environment,IDE),方便用户快速有效地建立应用程序。

1.3.1 环境要求

Visual Studio 2008是一个比较庞大的系统软件,它对计算机的要求较高。下面给出了安装和运行Visual Studio 2008的系统需求。

⊙ 处理器:配备1.6 GHz或速度更快的处理器。

⊙ 内存:384 MB或更大内存(Windows Vista至少需要768 MB)。

⊙ 硬盘空间:完全安装Visual Studio 2008大致需要4 GB的硬盘空间,再加上用户开发的项目文件占用的空间,最小需要5 GB以上的硬盘空间。

⊙ 显示设备:1024×768及以上的分辨率,16位颜色。

⊙ 光驱:在安装Visual Studio 2008时,DVD光驱是必需的。如果需要的所有组件都已安装在硬盘上,在开发过程中可以不再使用光驱。

⊙ 操作系统:建议使用Windows XP或更新版本的操作系统。

1.3.2 安装步骤

下面主要介绍在Windows Vista操作系统下安装Visual Studio 2008的步骤。在其他操作系统中安装Visual Studio.NET的过程大致相同。

(1)将Visual Studio 2008的安装光盘放入DVD光驱,自动出现如图1-2所示的界面。选择第1项“安装Visual Studio 2008”,安装程序将对Windows组件进行更新。因为将要安装的Visual Studio 2008的组件与原有的Windows组件不匹配,系统要求进行更新,以便进行Windows的升级工作。

图1-2 “Visual Studio 2008安装程序”对话框

(2)组件安装过程如图1-3所示。当升级完毕,单击“下一步”按钮,进行Visual Studio 2008的安装。

图1-3 Microsoft Visual Studio 2008安装界面

(3)单击“Visual Studio 2008”,出现如图1-4所示的界面。在指定的文本框中输入产品的密钥(Product Key),即本软件的使用密码,用户可以从软件商提供的资料中找到。

图1-4 “Microsoft Visual Studio 2008安装程序-起始页”对话框

(4)选中“我已阅读并接受许可条款”复选框,单击“下一步”按钮,进入下一界面,如图1-5所示。在这里,可以通过“自定义”模式选择需要安装的项目。如果硬盘空间有限,可以不安装MSDN Documentation。如果硬盘空间足够大,建议用户完全安装。在该界面中,安装程序允许选择安装路径,Visual Studio 2008默认的安装路径是“C:\Program Files\Microsoft Visual Studio 9.0\”。

图1-5 “Microsoft Visual Studio 2008安装程序-选项页”对话框

(5)设置完毕,单击“安装”按钮,开始安装,如图1-6所示。

图1-6 “Microsoft Visual Studio 2008安装程序-安装页”对话框

(6)安装完成后,可选择重新启动计算机,安装结束。

1.3.3 Visual Studio 2008新功能介绍

Visual Studio 2008比早期版本新增了许多功能,下面进行简要介绍。

(1)设置迁移

如果在同一台计算机上安装了Visual Studio 2005和Visual Studio 2008,在首次启动Visual Studio 2008时,可以迁移Visual Studio 2005中的大多数设置。

(2)社区组件

在使用Visual Studio 2008创作社区组件时,可以通过对ContentVersion元素使用新值来指定安装组件是为了与Visual Studio 2008一起使用,还是与Visual Studio 2005和Visual Studio 2008一起使用。

(3)类设计器对Visual C++代码的支持

在早期版本的Visual Studio中,类设计器仅支持托管语言(Visual C#和Visual Basic)。在Visual Studio 2008中,类设计器添加了对本机C++代码的有限支持,可用于可视化和文档。

(4)窗口管理和常规用户元素

若干用户界面(UI)元素已更新。这些功能包括:

⊙ IDE导航器:改进后的界面使在各项之间进行切换更轻松。

⊙ 对窗口停靠目标经过了改进,使停靠工具窗口更轻松。

⊙ 通用对话框:Visual Studio 2008使用Windows标准对话框,而不是自定义对话框,使导航体验与Windows中的导航体验更加一致。

⊙ 提供了新选项“环境字体”。

(5)项目设计器对Windows Presentation Foundation(WPF)应用程序的支持

Windows Presentation Foundation(WPF)应用程序已经添加到Visual Studio 2008中。有以下4种WPF项目类型:WPF应用程序(.xaml和.exe),WPF浏览器应用程序(.exe和.xbap),WPF自定义控件库(.dll),WPF用户控件库(.dll)。

如果在IDE中加载了WPF项目,可以通过项目设计器页的用户界面指定特定于WPF应用程序的属性。

(6)项目设计器多目标支持

通过使用多目标功能,可以使代码面向特定的.NET Framework版本:① .NET Framework 2.0,随Visual Studio 2005提供;② .NET Framework 3.0,随Windows Vista提供;③ .NET Framework 3.5,随Visual Studio 2008提供。

(7)WPF设计器

通过使用WPF设计器,可以在IDE中创建WPF应用程序和自定义控件。WPF设计器不仅具有XAML实时编辑功能,还可以改善用户的图形设计时体验。

以下功能是WPF设计器的新增功能:

⊙ 使用SplitView,可以调整图形设计器中的对象并立即查看对基础XAML代码所做的更改;同样,对XAML代码所做的更改将立即反映在图形设计器中。

⊙ “文档大纲”窗口允许查看XAML并在其中移动,而且所做的选择在设计器、文档大纲、XAML编辑器和“属性”窗口之间完全同步。

⊙ XAML编辑器中的IntelliSense实现了快速代码录入。IntelliSense现在支持已定义的类型。

⊙ 可以在设计器中向网格添加网格线,以便轻松地根据网格放置控件。

⊙ 通过使用对齐线,可轻松地将控件与文本对齐。

⊙ 设计器支持加载已定义的类型,包括自定义控件和用户控件。

⊙ 可以取消加载大型XAML文件。

⊙ 设计器扩展性支持设计模式和属性编辑器。

(8)语言集成查询(LINQ)

语言集成查询(LINQ)是Visual Studio 2008中的一组新功能,可以将强大的查询功能扩展到C#和Visual Basic的语法中。LINQ引入了标准的、易于学习的查询和转换数据模式,并且可以进行扩展,以便潜在支持任何类型的数据源。Visual Studio 2008包括LINQ提供程序的程序集,借助这些程序集,可以启用.NET Framework集合(LINQ to Objects)、SQL数据库(LINQ to SQL)、ADO.NET数据集(LINQ to ADO.NET)和XML文档(LINQ to XML)的语言集成查询。

(9)新报表项目

Visual Studio 2008包括用于创建报表应用程序的两个新项目模板。在“新建项目”对话框中有“报表应用程序”模板,在“新建网站”对话框中有“ASP.NET报表网站”模板。当创建新的“报表应用程序”项目时,Visual Studio将提供一个报表(.rdlc)和一个窗体(.vb/.cs),并将ReportViewer控件绑定到报表上。对于ASP.NET报表网站项目,Visual Studio将创建一个网站,该网站包含一个报表(.rdlc)、默认的ASP.NET页(.aspx)(ReportViewer控件已绑定到报表)以及Web配置文件(.config)。

创建报表项目时,将启动新报表向导。然后,可以使用该向导生成报表,或者可以关闭向导并手动生成报表。

(10)报表向导

Visual Studio 2008引入了一个报表向导,该向导将指导完成创建基本报表的步骤。用户可选择报表数据源、定义数据集、选择报表类型(表格或矩阵格式)以及报表应用样式。在完成向导之后,可以使用报表设计器来增强报表。

创建新报表应用程序项目或ASP.NET报表网站时,将自动启动报表向导。

1.4 如何学习C#语言

C#语言自C/C++演变而来,但是它更具有现代、简单、完全面向对象和类型安全等特点。它简化和现代化了C++在类、名字空间、方法重载和异常处理等领域,摒弃了C++的复杂性,更易用,更少出错。C#语言包括底层的 .NET类库,还包括封装在Visual Studio 2008开发工具中的一些组件,为学习者更快地开发应用程序提供了很好的帮助。那么,如何更好地学习C#呢?

① 了解C#的相关概念,如 .NET框架和C#语言的关系、C#与C++的异同之处。

② 认识C#的开发环境。几乎所有的开发人员都知道Microsoft的开发工具Visual Studio系列,如Visual Studio 2008是一套完整的开发工具集,用于开发ASP.NET Web应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++、Visual C#和Visual J#使用相同的集成开发环境(Integrated Development Environment,IDE),方便用户快速、有效地建立应用程序。

③ 熟练掌握基础语法知识,如基本符号、基本元素、语句和函数等。

④ 掌握面向对象的程序设计方法,如对象、类、继承性、封装性、多态性和消息传递等。

⑤ 掌握数据结构和常用算法,如标准数据类型和高级数据类型、递归算法、迭代算法、穷举算法和贪婪算法等。

⑥ 模仿教材实例,亲自动手完成各种类型应用程序的编写。上机实践是学好任何一门编程语言最好的方法。

⑦ 充分利用网络资源,开阔视野,扩充知识面,以提高自身的编程效率,达到熟练运用C#语言开发出高质量应用程序的目标。

1.5 小结

本章主要介绍了Microsoft .NET平台各主要部分的功能、.NET框架的概念和C#语言的主要功能及特点,并介绍了最新C#语言版本的功能、Visual Studio 2008的系统需求及安装过程,还介绍了Visual Studio 2008的新增功能;同时,针对如何学习C#语言,提供了几点学习建议。通过本章的学习,读者可了解什么是.NET框架,什么是C#语言以及Visual Studio 2008的主要功能,为学习C#语言打下基础。

延伸学习──.NET Framework类库

.NET Framework类库是一个与公共语言运行库紧密集成的可重用的类型集合。该类库是面向对象的,并提供托管代码可从中导出功能的类型。这不但使 .NET Framework类型易于使用,而且减少了学习 .NET Framework新功能所需要的时间。此外,第三方组件可与 .NET Framework中的类无缝集成。例如,.NET Framework集合类实现一组可用于开发集合类的接口。用户自定义集合类将与 .NET Framework中的类无缝地混合。

.NET Framework类型能够完成一系列常见编程任务(包括字符串管理、数据收集、数据库连接以及文件访问等任务)。除这些常见任务之外,类库还包括支持多种专用开发方案的类型。例如,可使用 .NET Framework开发下列类型的应用程序和服务:

⊙ 控制台应用程序。

⊙ Windows GUI应用程序(Windows窗体)。

⊙ Windows Presentation Foundation(WPF)应用程序。

⊙ ASP.NET应用程序。

⊙ Web服务。

⊙ Windows服务。

⊙ 使用Windows Communication Foundation(WCF)的面向服务的应用程序。

⊙ 使用Windows Workflow Foundation(WWF)的启用工作流程的应用程序。

练习 1

一、选择题

1.C#语言主要面向____开发环境进行编程。

A.DOS

B..NET

C.Windows

2..NET开发的语言无关性依赖于其运行库的执行环境,称为____运行库。

A.CLR

B.JIT

C.COM

D.Linux

D.C#

3.下面关于C#语言的说法中,不正确的是____。

A.C#语言完全支持面向对象编程

B.C#从C/C++发展而来,但更具优势,如开发Web应用程序和NT服务等

C.C#语法简单,编程灵活,但功能有限,不适合开发Windows应用程序

D.C#拥有对 .NET基类库的完全访问权,并易于访问Windows API

二、填空题

4..NET Framework的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,可以使用它开发多种应用程序,包括传统的命令行或 【A】 应用程序,也包括基于 【B】 所提供的最新创新的应用程序(如Web窗体和XML Web Services)。

5.____把Microsoft的所有语言的开发环境统一起来,所有语言使用同一套工具,在同一个集成开发环境中进行开发,并且改进了环境中所包含的各种工具。

6.C#语言虽然从C/C++语言发展而来,但是它摒弃了C/C++语言中容易出错的指针、多重继承等概念,是一种 【A】【B】 的语言。

三、问答题

7.C#语言有何主要特点?

8.C#语言有何主要功能?

9.简述安装Visual Studio 2008的系统要求和操作步骤。