从零开始学C#
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第一篇Visual Studio 2010开发平台

第1章Visual Studio 2010概述

Visual Studio是微软公司推出的开发环境,也是目前最流行的Windows平台应用程序开发环境之一,目前最新的版本是Visual Studio 2010。Visual Studio 2010推动云计算等新兴技术趋势,合理化应用程序生命周期管理(ALM),支持统一建模语言(UML)和特定域语言(DSL),另外,Visual Studio 2010增加了C#的动态编程、C++的全面支持、新的平台语言F#等新功能特性。Visual Studio 2010能够简化整个开发过程,让开发人员走向新的平台,提高开发人员的工作效率和热情,创建高质量和突破性的程序。

1.1 Visual Studio 2010平台简介

在.NET平台上,Visual Studio一直独领风骚。由早期的Visual Studio 2002、到2003年推出的Visual Studio 2003、后来的Visual Studio 2005、Visual Studio 2008,以及现在最新的Visual Studio 2010,功能不断完善和强大,程序开发更加高效快揵,.NET Framework也由1.0发展到现在的4.0,它为广大开发人员提供了更加稳健的、功能齐备的开发环境。Visual Studio 2010有许多令人期盼已久的强化功能,包括提供更高的程序开发效率、更精简的程序代码、更佳的安全性能。

1.1.1 Visual Studio 2010是什么

Visual Studio 2010是微软公司推出的开发平台,它为各类开发人员提供合适的工具。

Visual Studio 2010在以下几方面内容进行了改进。

❑ 增强和完善了Visual Studio IDE;

❑ 改进了Visual Basic和C#语言,开发人员可以根据自己的爱好选择任意一种语言;

❑ 同时还包括一种新的.NET Framework语言即F#;

❑ 支持基于MVC的Web应用,改进了代码编写的速度,简化了Web开发;

❑ 改进了对WPF和Silverlight应用程序的开发;

❑ 完善了Visual C++功能。

微软宣称Visual Studio 2010是开发者针对众多的应用程序进行的开发,诸如Windows 7、Office、Web、智能手机和云应用框架等。微软除了支持其基本平台外,也准备提供对新兴应用趋势的工具支持,即云计算和并行设计,以充分利用高性能的多核系统。例如:为并行编程提供了更多支持,包括增加调试窗口,增加对NET Framework PLINQ,本地Parallel Pattern Library和Concurrency Runtime并行扩展编码的支持。

Visual Studio 2010主要有以下新功能。

❑ C# 4.0中的动态类型和动态编程;

❑ 多显示器支持;

❑ 使用Visual Studio 2010的特性支持TDD;

❑ 支持Office;

❑ Quick Search特性;

❑ C++ 0x新特性;

❑ 灵活高效的IDE;

❑ 使用Visual C++ 2010创建Ribbon界面;

❑ 新增基于.NET平台的语言F#。

Visual Studio 2010和.NET Framework 4.0将在下面几个方面有所创新。

1.灵活高效的全新IDE

在Visual Studio 2010中,微软用全新的WPF技术重新打造了它的编辑器。借助WPF的强大功能,新的编辑器可以实现很多以前Visual Studio 2008的IDE根本无法想象的功能,比如代码的无级缩放,变量的高亮显示,可拆卸的代码窗口,多窗口即时更新,跟踪变化,代码的自动产生等。这些新的IDE特性都会极大地提高程序员的开发效率。

2.强化云计算能力

云计算概念在刚兴起时,微软就宣布要进军云计算领域。因此,Visual Studio 2010为Windows Azure提供了强有力的支持。Windows Azure是由微软开发的一套基于云计算的作业系统,主要用来提供云端线上服务所需要的作业系统、基础存储和管理的平台。虽然Azure平台可以满足大部分的云计算工作,但是它有一个缺陷,就是开发的周期比较长。因此,微软在Visual Studio 2010中为Windows Azure提供了专门的项目模型。借助Visual Studio 2010这个有效的开发工具,可以大大地减少云计算系统的开发周期。另外,开发人员可以利用Visual Studio 2010将创建的服务打包,然后通过Windows Live Developer Portal部署到Windows Azure。

3.提高并行计算速度

在以往的计算机发展历史中,每次硬件的升级都可带来软件性能的大幅提升。但是进入多核时代后,这种便利性就没有了。原因是当前的应用程序几乎都是针对一个运算核心而设计的,由于受到其架构的影响,软件并不能充分地利用多核所带来的性能提升,甚至有时性能还会有所下降。在这种情况下,开发者不得不改变应用程序的架构和开发方法,以应对多核的趋势,使得自己的软件可以充分利用硬件升级所带来的性能提升。

Visual Studio 2010加大了对并行运算的支持。例如,Visual Studio 2010的调试器会知道代码的并行特性,并且能够在调试程序的不同执行单元时显示应用程序的状态。另外,Visual Studio 2010还提供了一个并行性能分析器,它可以帮助分析应用程序的性能瓶颈,找到需要并行处理和可以进行并行处理的地方,并以图形化的形式表现出来。这样,通过Visual Studio 2010并行性能分析器的使用,开发人员就可以轻松地实现应用程序的并行化。这是非常有前瞻性的一个功能,也是协助应用程序步入多核计算趋势的关键一步。

4.C++王者归来

自从Visual Studio 6以后,Visual Studio中的C++再没有多大的变化,Visual Studio 2008也只是对C++进行一些细小的改善。但Visual Studio 2010在C++开发方面有了很多革命性的变化。首先,对C++新标准C++0x的全面支持,不会再像Visual C++ 6一样对C++标准支持不佳。其次,微软将Visual C++的构建系统VCBuild整合到了MSBuild中,借助后台编译,Visual C++的IntelliSense更加智能,能够处理更多的文件、更加复杂的项目。另外在MFC方面,通过引入很多新的类,MFC开始全面支持Vista、Windows 7风格的UI。

5.面向Windows 7

Visual Studio 2010提供了很多工具来帮助开发者开发基于Windows 7的应用程序,同时使那些已经存在的非托管应用程序,通过一定的处理也同样能够具有新的操作系统所带来的特性。在Visual Studio 2010中,微软花了很大的力气使得非托管C++代码的开发更加容易和高效。例如,升级MFC的库和头文件以全面支持Windows 7的界面元素,包括Ribbon界面,搜索功能甚至多点触摸特性的支持。

1.1.2 开发语言

Visual Studio 2010提供多种语言,下面具体介绍。

1.VB.NET

VB.NET提供了一种简单快捷的方法来创建基于.NET Framework的Windows、Web和移动设备应用程序,它的构建基础与VB 6.0有很大不同。与所有面向.NET Framework的程序一样,使用VB.NET编写的程序都具有安全性和语言互操作性方面的优点。

2.Visual J#

Visual J#使Java开发人员可以使用所选语言对.NET平台进行编程。编程人员利用Visual J#.NET可创建基于.NET的健壮的应用程序,这些应用程序可以无缝地与用任何其他.NET平台支持的语言编写的.NET应用程序进行交互操作。有了Visual J#.NET,Java开发人员可利用.NET框架的丰富工具(ADO.NET、ASP.NET和许多其他工具),这些工具的功能和简单性超过了Java开发工具包(JDK)规范中的功能。

3.Visual C++

Visual C++是一种功能强大的语言,用于在生成本机Windows(COM+)应用程序或.NET Framework托管Windows应用程序时进行深入细微的控制。Visual Studio 2010在C++开发方面有了很多革命性的变化,对C++新标准C++0x全面支持。

4.Visual C#

Visual C#具有简单、功能强大、类型安全和面向对象等特点。Visual C#凭借它的许多创新,在保持C样式语言的表示形式和优美特征的同时,可实现应用程序快速开发。在Visual Studio 2010中,对Visual C#增加了很多新功能,如动态支持(Dynamic Support)、Office编程能力、类型等价支持、协变与逆变等,这些新特性与新功能可有效改善Microsoft Office的编程能力和代码研究能力,并对测试驱动开发提供支持。

5.Visual F#

Visual F#是Visual Studio 2010中新增的全新.NET编程语言,结合了函数和面向对象编程,比较适合于并行、算法、探索性和技术性编程任务,在金融行业有独特的优势。Visual F#可用于开发应用程序或用F#码为其他.NET应用程序做必要的扩充。F#是.NET编程语言家族中第一个基于Ocaml并十分类似于它的函数语言,这是一种用于显示.NET在不同编程语言间互通的程序设计。

Tips

F#语言集安全、性能、脚本与Modern Runtime系统(Java虚拟机和微软通用Runtime)等多种优势于一体,并支持Python等交互式脚本语言、强类型推理、ML的安全性。另外,F#语言可以访问Access.NET库及其他数据库工具软件。

1.2 下载和安装工具(New Profiles(新外形))

Visual Studio 2010可以在微软官方网站下载,也可以在互联网搜索进行下载。安装Visual Studio 2010过程比较简单,只要操作系统符合Visual Studio 2010的安装条件即可进行逐步安装。

(1)安装时在Visual Studio 2010的安装光盘中或在下载的安装镜像文件中,找到“安装”可执行文件,双击该文件之后,程序弹出安装程序向导界面如图1-1所示。

图1-1 Visual Studio 2010安装向导界面

(2)单击“安装Microsoft Visual Studio 2010”链接,开始加载Visual Studio 2010安装组件,如图1-2所示。

图1-2 加载Visual Studio 2010安装组件

(3)安装组件加载完之后,单击“下一步”按钮,弹出协议界面,选择“我已阅读并接受许可条款”单选按钮,如图1-3所示。

图1-3 Visual Studio 2010协议

(4)单击“下一步”按钮之后,弹出界面如图1-4所示。

图1-4 Visual Studio 2010安装选项

(5)单击“安装”按钮之后,开始安装,如图1-5所示。

图1-5 Visual Studio 2010安装

(6)安装过程中需要重启计算机,直到安装结束,整个过程不再需要用户操作。安装完成后会弹出“安装成功”提示,如图1-6所示。

图1-6 Visual Studio 2010安装完成

1.3 应用程序类型

Visual Studio 2010提供了统一的.NET开发平台,它可以创建多种类型的项目,同时与.NET Framework自动集成,方便开发人员的集成编译和项目的建立。使用Visual Studio 2010可以创建以下几种类型的应用程序。

1.Windows应用程序

在.NET Framework上创建Windows应用程序,可以使用任何编程语言来编写。例如,利用Visual Studio 2010创建窗体应用程序、类库、Windows服务、控制台应用程序和WPF应用程序等。

2.Web应用程序

Visual Studio 2010可以直接创建网站类型的应用程序,可以使用任何编程语言来编写。例如,用Visual Studio 2010可以创建ASP.NET Web应用程序、Web控件库和ASP.NET AJAX服务器控件等。

3.Office应用程序

Visual Studio 2010对Office的编程能力进行了扩充和增强。Visual Studio Tools for Office包括新的Visual Studio项目,用于创建Word文档、Word模板、Excel工作簿和Excel模板的后台代码,应用程序级外接程序及SharePoint工作流模板。通过该应用类型的创建,可以实现基于Office产品的应用开发。

4.智能设备应用程序

Visual Studio 2010集成环境包括用于Windows CE的移动设备(例如,Pocket PC或Smartphone)的工具。通过创建该类型的应用程序,可以实现在移动的智能客户端应用的开发。

5.扩展性应用程序

用于实现自动化或向IDE添加功能的应用程序类型,例如,外接程序或向导,可以使用任何编程语言来编写。

1.4 创建一个Visual Studio 2010项目

项目是Visual Studio中经常用到的一个概念,创建项目也就是创建工程(Project)。项目是一组要编译到程序集,在某些情况下是单个模块中的源文件和资源。例如,项目可以是开发的应用程序,项目也可以是类库。在Visual Studio 2010创建项目时,Visual Studio 2010首先会创建与项目名称相同的解决方案,然后在此解决方案下创建项目。

1.4.1 运行新项目向导

Visual Studio 2010安装之后,读者一定想知道如何创建一个项目。本节讲解如何使用向导来创建一名称为“1.1”的项目。

本节将使用向导来创建一名称为“1.1”的项目。

(1)首先启动Visual Studio 2010,选择“开始”→“程序”→“Microsoft Visual Studio 2010”→“Microsoft Visual Studio 2010”命令,启动之后的界面如图1-7所示。

图1-7 Visual Studio 2010启动界面

(2)在启动界面中单击“项目”,此时界面中会显示名称为“最近项目”、“新项目”、“打开解决方案”的图标,对应的作用是显示最近创建或使用过的项目、新建项目、打开解决方案,如图1-8所示。

图1-8 项目向导界面

(3)单击“新项目”创建项目,如图1-9所示。输入项目名称“1.1”,选择项目保存位置,单击“确定”按钮,将创建名称为“1.1”的解决方案,解决方案包含一个名称为“1.1”的项目,如图1-10所示。Visual Studio 2010将自动创建一个winform界面。

图1-9 项目新建界面

图1-10 项目主窗口

1.4.2 理解解决方案和项目

在Visual Studio中,解决方案是构成某个应用程序的所有项目集,也就是说解决方案包含项目,一个解决方案可以包含一个或多个项目。形象地说,解决方案就是一个容器,在这个容器里,分成好多层,好多格,用来存放不同的项目。一个解决方案与项目是大于等于的关系。建立解决方案后,会建立一个扩展名为.sln的文件。

项目是一组要编译到程序集(在某些情况下是单个模块)中的源文件和资源。例如,项目可以是开发的应用程序,也可以是类库。在.NET下,一个项目可以表现为多种类型,如控制台应用程序、Windows应用程序、类库(Class Library)、Web应用程序、Web Service、Windows控件等。如果经过编译,从扩展名来看,应用程序都会被编译为.exe文件,而其余的会被编译为.dll文件。

在1.4.1节中讲解了用项目向导创建名称为“1.1”的项目,创建项目时,Visual Studio同时创建名称为“1.1”的解决方案,如图1-11所示。现在给“1.1”解决方案添加一个新项目“1.2”,解决方案窗口中,用鼠标右键单击“解决方案管理器1.1”→“添加”→“新项目”命令,会弹出如图1-9所示的“新建项目”窗口,“名称”文本框中输入项名称 “1.2”。此时“1.1”解决方案包含名称为“1.1”和“1.2”的两个项目,如图1-12所示。

图1-11 解决方案资源管理器

图1-12 1.1解决方案

当一个系统有很多的子系统功能时,可以使用一个项目来实现一子系统,用解决方案把所有的项目包含在内,实现所有的功能。

1.4.3 使用Visual Studio 2010编写代码

介绍了使用Visual Studio 2010向导创建项目之后,读者一定想了解如何实现一个应用程序的编写。本节将通过一个控制台的项目实例,向读者介绍如何编写一个简单的C#控制台程序。

本实例为控制台程序类型,控制台程序的程序入口点位于Main函数中,即所有的代码都是通过该函数作为入口,再将其运行。所以需要在Main函数中编写实现程序的代码。首先启动Visual Studio 2010,选择“开始”→“程序”→“Microsoft Visual Studio 2010”→“Microsoft Visual Studio 2010”命令,如图1-7所示。创建控制台应用程序操作步骤如下。

1.新建项目

在菜单栏中选择“文件”→“项目”命令,当然也可使用1.4.1节所讲的项目向导创建项目。

2.选择项目类型

新建项目的过程如下。

(1)在弹出的“新建项目”对话框的“已安装的模板”区域中选择“Windows”选项,然后在窗口右侧的“模板”区域中选择“控制台应用程序”选项。

(2)在对话框下方的“名称”文本框中填写项目的名称,本实例为HelloWorld。在“位置”文本框后,单击“浏览”按钮,选择需要保存该项目的路径。

(3)选中“为解决方案创建目录”复选框。所有项目信息填写完毕之后,单击“确定”按钮,如图1-13所示。

图1-13 创建控制台应用程序

3.查看解决方案结构

创建完毕之后,Visual Studio 2010会自动在“解决方案浏览器”中显示整个解决方案和项目的文件。在“解决方案浏览器”的文件结构中,可以看到已经创建好的一个Program.cs文件。在该文件中,可以编写控制台应用程序的主函数代码。“解决方案浏览器”窗口如图1-14所示。

图1-14 控制台应用程序的解决方案资源管理器

4.编写Program程序代码

双击Program.cs文件,打开该代码文件,在Main()函数的程序代码中输出“HelloWorld”字符串,Program.cs文件代码如下。

    01   using System;
    02   using System.Collections.Generic;
    03   using System.Text;
    04
    05   namespace Hello_World
    06   {
    07      class Program
    08      {
    09          static void Main(string[] args)
    10         {
    11         System.Console.WriteLine("Hello World!");//将Hello World
              字符输出到控制台
    12         System.Console.ReadLine();               //读取Enter键之后,关闭控制台应用程序
    13        }
    14      }
    15   }

1.4.4 生成和运行程序

生成主要是对解决方案或项目进行编译的,要编译项目可以在Visual Studio 2010环境中选择菜单栏的“运行”→“运行Hellow Wold编译完成后”命令,也可以在解决方案资源管理器中,用鼠标右键单击“Hellow Wold”项目,在弹出的快捷菜单中选择“运行”命令。如果生成没有错误就可运行程序。运行程序可以按“F5”键,也可以单击工具栏上的运行按钮,执行结果如图1-15所示。

图1-15 控制台应用程序的编译执行结果

如果在程序的编译过程中出现了语法错误,Visual Studio 2010会自动提示错误的原因。上一实例代码中,如果把第一条“HelloWorld”输出语句后的分号去掉,然后进行编译,Visual Studio 2010会提示如图1-16的错误。单击“否”按钮,Visual Studio 2010会在窗口显示具体的错误提示信息,如图1-17所示。

图1-16 控制台应用程序的编译错误提示窗口

图1-17 错误提示信息

1.4.5 设置编译器选项

编译器选项主要是项目在生成、编译、调试和连接时的属性设置。如果要设置编译器选项,在如图1-11所示的解决方案资源管理器中选择要编译的项目名称,单击鼠标右键,在弹出的快捷菜单中选择“属性”命令,就会弹出如图1-18所示的Visual Studio 2010的项目属性设置对话框。

图1-18 设置编译器选项对话框

选择“应用程序”选项卡可以设置程序集名称、命名空间名称、输出类型和Framwork版本。选择“运行”选项卡可以设置编译模式、平台、警告等级、输出路径等。选择“错误”选项卡可以设置编译模式、平台、启动操作、启动选项、启用调试器等。

1.5 C# 4.0中的新特性

在本节中将介绍C# 4.0中的新特性——dynamic类型、命名和可选参数、类型等价支持、协变和逆变等。

1.5.1 Visual C# 4.0 dynamic类型

随着Visual Studio 2010的发布,C#的版本也升级到了4.0。C# 4.0的主题就是动态编程,虽然C#仍然是一种静态语言,但是其对象的意义开始变得越来越“动态”。在Visual C# 4.0中引入了一种新的dynamic类型,该类型是一个静态的(static)类型,但是一个dynamic类型的对象会绕过静态类型检查。在大多数情况下dynamic和object类型有些相似,但是在编译时,dynamic类型被假定为支持任何操作,也就是说dynamic类型的对象可以是一个COM对象,也可以是一个DOM对象或者Office对象,而如果在运行时发现该对象不是期望的对象则会抛出一个运行时异常。

因为把一个对象定义为dynamic类型,所以在代码中编写的任意调用在编译时都是合法的(这一点在声明为object类型时不能成立)。例如,在控制台项目中输入以下代码,使用1.4.4节生成程序方法编译此程序,编译结果显示Build Succeeded,表明代码通过编译。

    01   class Program
    02   {
    03      static void Main(string[] args)
    04      {
    05          dynamic obj ="hello word";//声明dynamic类型对象obj,并赋值
    06          obj.Configuration();
    07          Console.ReadLine();
    08      }
    09   }

【代码解析】第5行声明dynamic类型对象obj,并赋值。

但是按“F5”键运行后发现obj并不支持Configuration方法,因此会抛出异常,如图1-19所示。

图1-19 动态类型抛出异常

通过这个例子可以说明,C#编译器允许开发人员通过dynamic对象调用任何方法,即使这个方法根本不存在,编译器也不会在编译的时候报编译错误。只有在运行的时候,它才会检查这个对象的实际类型。动态类型将使得C#可以以更加统一而便利的形式范围检查下列对象:

❑ 来自动态编程语言,如Python或Ruby的对象;

❑ 通过IDispatch访问的COM对象;

❑ 通过反射访问的一般.NET类型;

❑ 结构发生过变化的对象,如HTML DOM对象。

当开发人员得到一个动态类型的对象时,不管它是来自COM、IronPython、HTML DOM,还是反射,只需要对其进行操作即可,动态语言运行时(DLR)会帮助开发人员指出针对特定的对象,这些操作的具体意义。这将给开发人员的开发带来极大的灵活性,并且能够极大程度地精简代码。

1.5.2 Visual C# 4.0命名和可选参数

Visual C# 4.0引入了命名和可选参数,命名参数和可选参数与SQL Server中的存储过程的参数十分相似。命名参数允许调用者通过提供参数的名称来为其赋值,这样参数的位置就不再重要了。可选参数允许在定义时为某些参数赋值,在调用时可以忽略这些“可选的”参数。命名参数和可选参数可以应用在方法、索引器、构造函数和委托中。命名参数和可选参数与dynamic类型结合在一起使用,可以方便地访问如Office自动化API之类的COM API。

1.命名参数

命名参数的语法为:

    参数名称1:参数值1,参数名称2:参数值2…

下面使用一个函数调用来说明命名参数。

    01   static void Main(string[] args)
    02   {
    03        Check_User(pwd:"123456",username:"张三");
    04   }
    05
    06   static void Check_User(string username, string pwd)
    07   {  Console.WriteLine("username:{0},pwd:{1}", username, pwd);//输出
    08   }

通过以上程序可以看到由于在调用函数Check_User时使用了命名参数,参数的位置可以根据需要变更,而在以前版本中参数的位置必须和函数定义时的位置一致。

2.可选参数

方法、构造函数、索引器和委托的定义可以指定其参数为必选的还是可选的,在调用时必须提供必选参数,但是可以省略可选参数。还可以使用System.Runtime. InteropServices.Optional Attribute特性类定义可选参数,该类从1.0时代就已经包含在基类库中了。每一个可选参数的定义都包含默认值(默认值必须是常量),如果在调用时没有指定该参数,则使用默认值。下面是可选参数的例子。

    01   static void Main(string[] args)
    02   {
    03       Check_User("张三","123456","管理员");
    04   }
    05
    06   /// <summary>
    07   /// 检查用户
    08   /// </summary>
    09   /// <param name="username">用户名称</param>
    10   /// <param name="pwd">用户密码</param>
    11   /// <param name="power">用户权限</param>
    12   /// <param name="zt">用户状态</param>
    13   static void CreateUser(string username, string pwd,
    14       string power="0",bool zt=false)
    15   {
    16       Console.WriteLine("username:{0},pwd:{1}", username, pwd);
    17   }

在所有必需参数后面定义可选参数,如果在调用时提供了某个可选参数的值,那么必须提供该可选参数之前所有可选参数的值(如果此参数之前有可选参数),而不允许使用逗号分隔的形式提供参数。

1.5.3 Visual C# 4.0类型等价支持

开发人员可以部署一个应用程序,使之嵌入类型信息,而不是从PIA(主互操作程序集)中导入类型信息。借助于内嵌的类型信息,应用程序可以在运行时使用某种数据类型而无须要求使用对运行时程序集的引用。如果发布了运行时程序集的各种版本的话,那么,包含嵌入式类型信息的应用程序就可以直接使用各种版本的程序集工作,而不必重新进行编译。类型等价支持的使用,方便了COM API的访问。

类型嵌入经常用于COM交互,例如,使用Microsoft Office中的自动化的应用程序。嵌入类型信息允许同一个应用程序在安装了不同的Office版本的机器上运行,而且开发人员可以在完全托管解决方案中使用类型嵌入。嵌入的类型需要满足以下条件:

❑ 该程序集至少提供一个公共接口;

❑ 该嵌入接口使用ComImport和Guid特性声明;

❑ 该程序集使用ImportedFromTypeLib和一个程序集级别的Guid特性标注(默认情况下Visual C#模版已包含了程序集的Guid特性)。

1.5.4 C# 4.0协变和逆变

Visual C# 4.0引入了协变和逆变的概念,协变功能能够支持用户使用比泛型参数更具体的类型,而逆变(contravariance)有助于使用更一般的类型。协变和逆变新概念的引入可以使实现变体接口的类进行隐式转换,从而为使用变体委托类型的方法签名匹配提供更多的灵活性。用户可以使用in和out关键字来建立变体类型的接口和委托。新的.NET框架还针对几种现有的泛型接口和委托引进了变体支持。

Visual C# 4.0中新提供了协变和逆变的新特性,一个泛型接口或委托的泛型参数被声明为协变或逆变时该接口或委托称为变体,这为解决类似于开篇中的两类问题带来了便利。.NET Framework 4.0中已为现有的一些接口和委托增加了变体支持,并且开发人员可以使用in和out关键字定义自己的变体接口和委托,但在定义时需要遵守相应的规则。

1.5.5 Office编程

Visual Studio .NET前几个版本也可以对Office进行编程操作,但是由于参数太多,类型转换复杂而烦琐,使开发人员对Office编程操作感到头痛。Visual Studio 2010中Visual C# 4.0新增加了命名和可选参数、动态类型、索引属性及可选的ref修饰符,这使得在访问COM接口(包括Office自动化相关API)方面更加方便快揵,开发Office程序更加高效。

1.5.6 多层显示(MultiMonitor)

Visual Studio 2010提供了能将IDE的窗体移动到Visual Studio IDE之外的功能,将它放至到桌面上或另一个显示器中显示。如果关闭Visual Studio,并再次打开它,会发现所有的窗体出现在最后一次放置的地方,如图1-20所示。

图1-20 Visual Studio 2010多层显示

1.5.7 代码高亮突出显示

在代码中选中一个变量时,这个变量的所有其他实例就会突出显示。这样能加速寻找变量的过程,同时也能提高代码的可读性,如图1-21所示。

图1-21 代码高亮显示

1.6 小结

本章主要介绍了微软最新开发平台Visual Studio 2010的相关知识,包括Visual Studio 2010的平台简介、Visual Studio 2010中的开发语言、应用程序类型等相关内容。随后,介绍了如何使用Visual Studio 2010向导创建项目,在项目中书写代码、生成和运行项目等。最后,介绍了Visual Studio 2010中C#的新特性。

通过本章的学习,读者可以简单了解Visual Studio 2010的相关知识,以及如何通过Visual Studio 2010创建项目,在控制台完成简单C#程序开发。

1.7 练习

一、填空题

1.Visual Studio 2010中新增的开发语言是(  )。

2.解决方案和项目的关系是解决方案(  )项目。

3.Visual Studio 2010中运行项目应用程序的快捷键是(  )。

4.被定义为dynamic类型的对象,使用了未经定义的方法,程序能通过(  ),但运行时报错。

5.Visual Studio 2010中,Framework的版本是(  )。

二、简答题

1.简述Visual Studio 2010新功能。

2.简述Visual Studio 2010新特性。

3.Visual Studio 2010包含哪些开发语言?

三、上机题

使用Visual Studio 2010创建一个C#控制台项目,输出“Hello boys and girs”。