

.NET框架简介
说到C#,就不得不先简单介绍一下.NET。按照微软总裁兼首席执行官Steve的说法:“它代表一个集合,一个环境,可以作为平台支持下一代Internet的可编程结构。”
C#是.NET的代表语言。C#语言和.NET的关系就像舰载战斗机与航空母舰的关系。航母是一个能让舰载机充分发挥其优势的作战平台,所以学习C#语言也离不开对.NET的理解。为了方便学习,下面简单地了解一下.NET这个“航母”平台的基础知识。
Microsoft.NET(简称.NET)是微软公司推出的面向网络的一套完整的开发平台,从程序员的角度看,.NET是一组用于生成Web服务器应用程序、Web应用程序、Windows应用程序和移动应用程序的软件组件,用该平台建立的应用程序可以在公共语言运行库的控制下运行。
如图1.1所示,.NET体系结构的核心是.NET框架(.NET Framework),其在操作系统之上为程序员提供了一个编写各种应用程序的高效工具和环境。.NET体系结构的顶层是用各种语言编写的应用程序,这些应用程序由公共语言运行库控制执行。

.NET能支持多种应用程序的开发,其中控制台程序是一种传统而简单的程序形式,一般是字符界面,可以编译为独立的可执行文件,通过命令行运行,在字符界面上输入/输出。Windows应用程序是基于Windows Forms(Windows窗体)的应用程序,是一种基于图形用户界面(Graphical User Interface,GUI)的应用程序,一般是在用户计算机本地运行的。本书案例采用的是控制台应用程序或Windows应用程序。

.NET框架包括两个主要组件,即公共语言运行库和.NET Framework类库。
(1)公共语言运行库
公共语言运行库又称公共语言运行时(Common Language Runtime,CLR)或公共语言运行环境,是.NET框架的底层。其基本功能是管理用.NET框架类库开发的应用程序的运行并且提供各种服务。
.NET将开发语言与运行环境分开,一些基于.NET平台的所有语言的共同特性(如数据类型、异常处理等)都是在CLR层面实现的,在.NET上集成的所有编程语言编写的应用程序均需
通过CLR才能运行,使用CLR的一大好处是支持跨语言编程,凡是符合公共语言规范(Common Language Specification,CLS)的语言所编写的对象都可以在CLR上相互通信,相互调用。例如,用C#语言编写的应用程序,也能够使用Visual Basic.NET编写的类库和组件,反之亦然,这大大提高了开发人员的工作效率。
(2).NET Framework类库
.NET Framework类库是一个面向对象的可重用类型集合,该类型集合可以理解成预先编写好的程序代码库,这些代码包括一组丰富的类与接口,程序员可以用这些现成的类和接口来生成.NET应用程序、控件和组件。例如,Windows窗体类是一组综合性的、可重用的类型,使用这些类型可以轻松、灵活地创建窗体、菜单、工具栏、按钮和其他屏幕元素,从而大大简化Windows应用程序的开发难度。程序员可以直接使用类库中的具体类,或者从这些类中派生出自己的类。.NET框架类库是程序员必须掌握的工具,熟练使用类库是每个程序员的基本功。.NET支持的所有语言都能使用类库,且它们使用类库的方式是一样的。

.NET框架上可以集成几十种编程语言,这些编程语言共享.NET框架的庞大资源,还可以创建由不同语言混合编写的应用程序,因此可以说.NET是跨语言的集成开发平台。
如图1.2所示,.NET框架上的各种语言分别有各自不同的编译器,编译器向CLR提供原始信息,各种编程语言的编译器负责完成编译工作的第一步,即把源代码转换为用Microsoft中间语言(Microsoft Intermediate Language,MSIL)表示的中间代码。MSIL是一种非常接近机器语言的语言,但还不能直接在计算机上运行。第二步编译工作就是将中间代码转换为可执行的本地机器指令(本地代码),在CLR中执行,这个工作由CLR中包含的即时编译器(Just In Time,JIT)完成。

|
| 图1.2 .NET代码执行流程示例 |
认识C#语言
C#语言是微软公司专门为.NET平台量身打造的程序设计语言,是一种强大的、面向
对象设计方法的程序设计语言,它是为生成运行在.NET框架上的企业级应用程序而设计的。
C#看起来与Java有着惊人的相似,它包括诸如单一继承、接口等特征以及与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java仍然有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET Windows网络框架的主角。

微软对C#的定义如下:C#是一种安全、现代、简单的由C和C++衍生而来的面向对象编程语言。它根植于C和C++语言之上,并可以立即被C和C++的使用者所熟悉。设计C#的目的就是综合Visual Basic的高生产率和C++的行动力,目前,C#已经成为Windows平台上软件开发的绝对主流语言。
作为.NET的核心语言,C#有很多优点,如完全面向对象的设计、强大的类型安全、自动的垃圾回收功能、组件技术、跨平台异常处理、版本处理技术等。大家将在后续的C#学习与使用中深入体会这些优点。

强大的.NET平台必须有强大的集成开发环境(IDE)来支持,微软专门提供了Visual Studio.NET(简称VS.NET)作为.NET平台的集成开发环境,它集成了.NET框架,通过VS.NET可以快速方便地开发.NET应用程序。
Visual Studio.NET起始页
选择【开始】|【程序】| Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010命令,打开如图1.3所示的Visual Studio 2010主界面,其中默认显示的是起始页。启动后是否显示起始页,可以选择【工具】|【选项】命令,在弹出的对话框中选择【启动】选项并进行设置。
Visual Studio 2010起始页主要由标题栏、菜单栏、工具栏、最近使用的项目、最新新闻、入门、工具箱等组成。其中,标题栏、菜单栏、工具栏与Windows标准窗口类似,这里不再介绍,其他部分的含义介绍如下。

|
| 图1.3 Visual Studio 2010专业版起始页 |
充电:1989年,求伯君在深圳的一个小旅馆里一个人孤独地完成了举世震惊的WPS。但到了面向对象程序设计年代,单个程序员单枪匹马闯天下的英雄时代已经一去不复返了。2011年10月24日,求伯君辞去其在金山软件的所有执行性职务,正式退休,这也标志着“把硬盘从机器上卸下来,带回家去”的老一代程序员时代正式结束。今天的软件如此庞大,需要大批程序员通力合作方可完成,因此团队管理功能就显得非常重要了。
Visual Studio.NET集成开发环境
当创建或打开一个项目以后,将进入如图1.4所示的Visual Studio 2010的开发环境界面。而在实际操作时看到的界面可能会与图1.4有所不同,因为Visual Studio 2010的开发环境布局可以定制。
Visual Studio 2010典型主界面包含用户编辑区、【工具箱】窗口、【解决方案资源管理器】窗口、【属性】窗口以及【输出】窗口等。它们的功能分别介绍如下。

用户编辑区是起始页、设计器视图、代码视图及帮助内容的显示区域,主界面中的这些窗口可以通过窗口上部的选项卡进行切换。用户编辑区允许用户打开某个文件并对文件进行编辑。如果用户打开了多个文件,那么这些文件将以选项卡的方式显示在用户编辑区的上部,选项卡的标题即为文件名。如果选项卡的标题后面带一个“*”号,则表示这个文件已被修改,但尚未保存。
在用户编辑区中主要有两种视图:设计视图和代码视图。选择【视图】|【代码】命令或选择【视图】|【设计器】命令,或者选择窗口上部的选项卡,可在代码视图和设计视图之间进行切换。
如图1.4所示为设计视图,设计视图用来设计Windows窗体或Web窗体。当创建Windows窗体应用程序或Web应用程序时,会默认打开设计视图,在该视图中可以为Windows或Web界面添加并设置控件。

|
| 图1.4 Visual Studio 2010 IDE窗口 |
双击设计视图中的窗体或窗体中的任意控件,都会打开代码视图,如图1.5所示。代码视图是一个纯文本编辑器,在其中可以进行常见的文本编辑操作,如定位、选定、复制、剪切、粘贴、移动、撤销、恢复等操作。VS.NET的代码编辑器以不同的颜色显示代码中不同含义的内容,如以蓝色显示关键字,以绿色显示注释,以蓝绿色显示类名,以棕红色显示字符串。控制台应用程序只有代码视图。

|
| 图1.5 代码视图 |

用户编辑区左侧是【工具箱】窗口,如图1.4所示。工具箱通常与服务器资源管理器共享一个屏幕区域,可以通过窗口下方的选项卡进行切换。工具箱是控件的容器,里面分类放置了很多用于设计程序界面的常用控件,可用于向Windows窗体应用程序或Web应用程序添加控件。工具箱中显示的控件会根据程序员所使用的不同设计器或编辑器而发生变化。整个工具箱由多个选项卡组成,每个选项卡中包含一组控件。可以通过单击选项卡前面的“+”或“-”来展开或者折叠选项卡。
服务器资源管理器是VS.NET的服务器开发管理控制台,帮助程序员访问和处理计算机上所有具有权限的资源。

用户编辑区右侧是【解决方案资源管理器】窗口。解决方案资源管理器通常与类视图、动态帮助共享一个屏幕区域,可以通过窗口下方的选项卡进行切换,如图1.6所示。
VS.NET提供了两类容器,帮助用户有效地管理开发工作所需的项(如文件夹、文件、引用和数据连接),这两类容器分别叫做解决方案和项目。使用.NET开发的应用程序叫做解决方案,一个解决方案可以包括一个或多个项目,一个项目是一个完整的程序模块,用于解决一个独立的问题,一个项目通常包含多个项。解决方案资源管理器以树状目录的形式列出了当前解决方案中的项目和文件,如图1.6所示。开发应用程序时,该树状目录可帮助用户管理解决方案中的项目和文件。解决方案资源管理器类似于一个文件夹,它的操作也类似于Windows文件夹操作,双击解决方案资源管理器中的某个文件将打开这个文件,通过拖放操作可以实现文件的复制和移动操作,还可以删除或者重命名文件。
解决方案包含多个项目时,其中有且仅有一个项目作为默认的启动项目,启动项目是程序执行的入口,启动项目的文件名在解决方案资源管理器中以粗体显示。

用户编辑区的右侧下方是【属性】窗口,如图1.7所示。它专门用于设置当前选定的窗体或控件的属性。属性是窗体和控件对象的静态特征描述,如某控件的颜色、名称、位置等。【属性】窗口中显示的内容会随着选择对象的不同而发生变化。

| 
|
| 图1.6 【解决方案资源管理器】窗口 | 图1.7 【属性】窗口 |

在用户编辑区下方默认显示了很多其他窗口,图1.8是【输出】、【测试结果】、【错误列表】、【命令窗口】等4个比较常用窗口中的【输出】窗口。【输出】窗口供系统向用户输出一些用户需要的信息,例如,程序在组建过程中所产生的输出信息。【错误列表】窗口可以显示在编辑和编译代码时产生的“错误”、“警告”和“消息”,可以查找智能感应(IntelliSense)所标出的语法错误等。双击任意错误信息项将会打开出现问题的文件,然后移到相应的问题行。可以使用“错误”、“警告”和“消息”按钮选择要显示哪些项。

|
| 图1.8 【输出】窗口 |
上述子窗口大部分可以通过【视图】菜单打开,一些与调试相关的窗口可以通过【调试】|【窗口】命令打开。
窗口布局调整
VS.NET IDE中的子窗口可以根据需要进行调整、合并,从而定制出符合用户使用习惯的IDE窗口布局。VS.NET IDE中有两类窗口:一类是主区域显示窗口,另一类是在主区域周围显示的子窗口。不管哪类窗口,当若干个窗口共享同一屏幕区域时,该屏幕区域内的窗口以选项卡的形式叠放在一起,在最前端显示的窗口为当前活动窗口,可以通过选择该屏幕区域边框上的选项卡来切换各个窗口。

主区域周围显示的子窗口标题栏的右侧有一个【关闭】按钮和一个图钉按钮。单击【关闭】按钮将关闭窗口;单击图钉按钮,窗口将在自动隐藏状态和显示状态之间切换。
当图钉按钮纵向显示时,窗口为显示状态,有停靠显示和浮动显示两种方式,默认为停靠方式。这些子窗口可以移动,用鼠标指向一个窗口的标题栏,拖动该窗口,在该窗口可以停靠的位置将会显示出导航按钮,用鼠标拖动窗口至导航按钮,该窗口将要停靠的位置会以半透明蓝色背景显示,例如,拖动服务器资源管理器窗口到主界面中间时的状态如图1.9所示。

程序员在编写代码或者设计较大窗体时,往往希望用户编辑区能够尽量最大化,这时可以利用VS.NET提供的窗口自动隐藏功能隐藏主区域周围的子窗口,如隐藏【工具箱】和【属性】窗口等,以此来扩大用户编辑区域。具体方法如下:单击窗口标题栏上的图钉按钮,当其变为横向显示时,窗口为自动隐藏状态。窗口自动隐藏后,仅在界面边框上显示一个图标,把鼠标移到这个图标上面,被隐藏的窗口将自动弹出来。

|
| 图1.9 子窗口移动示例 |
用户可自行定制符合个人使用习惯的IDE窗口布局。
“不实战,不入行”。说了这么多,还是且学且做、且做且学吧。
