图书前言

前    言

  Microsoft Visual C#是一种功能强大、使用简单的语言,主要面向需要使用Microsoft .NET Framework来创建应用程序的开发者。它在C++和Microsoft Visual Basic的基础上去芜存菁,最终成了一种更加清晰、更富有逻辑的语言。C# 1.0于2001年亮相。几年后随着C# 2.0和Visual Studio 2005的问世,语言新增了几个重要功能,包括泛型、迭代器和匿名方法等。随Microsoft Visual Studio 2008发布的C# 3.0添加了更多功能,包括扩展方法、Lambda表达式以及语言集成查询(Language Integrated Query,LINQ)。2010年发布的C# 4.0提供了进一步的增强,它改善了与其他语言和技术的互操作性。新增功能包括具名参数和可选参数,另外还有dynamic类型(告诉语言的“运行时”实现对象的晚期绑定)。在随C# 4.0发布的.NET Framework中,最重要的新功能就是“任务并行库”(Task Parallel Library,TPL)。可用TPL构建具有良好伸缩性的应用程序,从而快速和简单地发挥出多核处理器的潜力。C# 5.0则通过async修饰符和await操作符提供了对异步任务的原生支持。

  Windows 8是Microsoft公司近年来最具革命性的一款操作系统。新操作系统支持高度交互式的应用程序,它们能相互分享和协作,还能轻松连接云端服务。Visual Studio 2012开发环境使这些强大功能变得很容易使用,大量新向导和增强功能显著提高了开发效率。Visual Studio 2012、Windows 8和C# 5.0三剑客提供了完善的平台和工具集来帮助你开发下一代功能强大的、直观的而且容易移植的应用程序。但是,即便不用Windows 8进行开发,Visual Studio 2012和C# 5.0这两者的组合也能提供强大的助力。

本书面向的读者

  本书假定你要使用Visual Studio 2012和.NET Framework 4.5学习基础的C#编程知识。学完本书后,会对C#有一个全面、透彻的理解,会用它开发出响应速度快的、易于伸缩的、能在Windows 7和Windows 8上运行的应用程序。

  可构建并运行在Windows 7和Windows 8上运行的C# 5.0应用程序。但两种操作系统的用户界面显著不同,所以第I部分到第III部分的练习和示例在两种环境下都能运行,而第IV部分专注于Windows 8应用开发。

本书不面向的读者

  本书面向刚开始涉足C#应用开发的人士,重点放在C#语言上面。本书不涉及企业级Windows应用程序开发,比如ADO.NET,ASP.NET,Windows Communication Foundation或者Workflow Foundation。要了解这些方面的知识,可阅读“从入门到精通”系列的其他书籍,包括《ASP.NET 4从入门到精通》、《ADO.NET 4从入门到精通》以及《Windows Communication Foundation 4从入门到精通》。

本书的组织

  本书分为以下四大部分。

* 第I部分“Visual C#和Visual Studio 2012概述”介绍C#语言的核心语法,演示了Visual Studio编程环境。

* 第II部分“理解C#对象模型”深入探讨如何用C#创建和管理新类型,如何管理这些类型引用的资源。

* 第III部分“用C#定义可扩展类型”全面讨论如何利用C#语言元素来构建能在多个应用程序中重用的类型。

* 第IV部分“使用C#构建专业Windows 8应用程序”描述Windows 8编程模型,如何用C#为新模型构建交互式应用程序。

注意 虽然第IV部分面向Windows 8,但第23章和第24章的一些概念仍然适用于Windows 7应用程序。

导读

  本书帮助你掌握多个基本领域的开发技能。无论刚开始学习编程,还是从另一种语言(C、C++、Java或Visual Basic)转向C#,本书都能提供帮助。可以参考下表找到自己的最佳起点。

  

读者类型 步骤 面向对象编程的新手 1. 按照“范例代码”一节的步骤安装练习文件。

2. 顺序阅读第Ⅰ部分、第Ⅱ部分和第Ⅲ部分。

3. 有了一定经验后,如果有兴趣,继续完成第Ⅳ部分的学习。 熟悉C语言等过程编程语言,但新涉足C# 

1. 按照“范例代码”一节的步骤安装练习文件。略读前5章来获

   得对C#和Visual Studio 2012的大致印象,重点阅读第6~22章。

2. 有了一定经验后,如果有兴趣就继续完成第Ⅳ部分的学习。 从面向对象语言C++或Java等迁移到C# 1. 按照“范例代码”一节的步骤安装练习文件。

2. 略读前7章,获得对C#语言和Visual Studio 2012的大致印象,

   重点阅读第8~22章。

3. 要想了解Windows 8应用程序开发,请阅读第Ⅳ部分。

续表

读者类型 步骤 从Visual Basic 6迁移到C#  1. 按照“范例代码”一节的步骤安装练习文件。

2. 顺序阅读第Ⅰ部分、第Ⅱ部分和第Ⅲ部分。

3. 如要了解Windows 8应用程序开发,请阅读第Ⅳ部分。

4. 阅读每章末尾的“快速参考”小节,了解C#特有的构造。 做完所有练习后再将本书作为参考书使用的读者 1. 根据目录寻找特定主题的信息。

2. 阅读每章最后的“快速参考”,查看对当前章所介绍的语法和

   技术的简单回顾。

  本书大多数章节都通过实际的例子来方便读者试验刚学到的概念。无论感兴趣的是哪个主题,都需要下载并安装范例代码。

本书的约定和特色

  本书通过一些约定来增强内容的可读性,以便于读者理解。

* 每个练习都用编号的操作步骤来完成。

* “注意”等特色段落提供了成功完成一个步骤需要了解的额外信息或替代方案。

* 要求读者输入的文本加粗显示。

* 两个键名之间的加号(+)意味着必须同时按下这两个键。例如,“按Alt+Tab键”意味着按住Alt键不放,然后按Tab键。

* 描述菜单操作时,采取“文件”|“打开”的形式,意思是从“文件”菜单中选择“打开”命令。

系统需求

  为了完成本书的练习,需准备以下硬件和软件:

* Windows 7(x86或x64),Windows 8(x86或x64),Windows Server 2008 R2(x64)或者Windows Server 2012(x64)

注意 Visual Studio 2012还支持Windows Vista、Windows XP和Windows Server 2003。但本书的练习和代码未在这些平台上测试。

* Visual Studio 2012(除Visual Studio Express for Windows 8之外的任意版本)

注意 可以使用Visual Studio Express 2012 for Windows Desktop,但就只能执行本书的Windows 7版本的练习。不可用它执行第IV部分的练习。

* 1.6 GHz或更快的处理器(推荐2 GHz以上)

* 32位操作系统至少1 GB RAM,64位至少2 GB RAM。在虚拟机中运行再加512 MB

* 10 GB剩余硬盘空间

* 支持DirectX 9的显示卡,1024 × 768或更高分辨率。Windows 8推荐1366 × 768或更高分辨率

* DVD-ROM驱动器(如果从DVD安装Visual Studio)

* 下载软件和范例代码需要Internet连接

  此外,还需要以管理员身份安装和配置Visual Studio 2012。

范例代码

  本书的配套网络资源包含练习时会用到的范例代码。使用这些范例代码,读者不再需要浪费时间创建和练习无关的文件。借助于这些练习文件和课程中描述的步骤,读者可以在实践中学习,这是迅速掌握并记住新的编程技能的一种简单而高效的方式。

  按以下步骤在计算机上安装本书配套代码。

1. 在Internet Explorer或其他浏览器的地址栏中输入transbot.blog.163.com。

2. 找到《Visual C# 2012从入门到精通》博客文章,按提示下载源代码文件压缩包。

3. 解压到以下位置:

      文档①\Microsoft Press\

  也可从译者的网盘http://transbot.ys168.com下载练习文件和其他资源。

使用练习文件

  本书每一章都解释了在什么时候以及如何使用必要的练习文件。需要使用练习文件的时候,书中会给出相应的指示,帮助你打开正确的文件。

  如果想知道所有细节,可以参见下表,其中列出了本书要用到的所有Visual Studio 2012项目和解决方案,它们以文件夹的形式进行分组以便查找。练习通常会为同一个项目提供初始文件和完成之后的版本。有的练习提供Windows 7和Windows 8两个版本,操作步骤会针对不同操作系统给出相应的指示。已完成的项目存储在带有“- Complete”后缀的文件夹中。

注意 如果使用Windows Server 2008 R2,则按照Windows 7的步骤操作。在使用Windows Server 2012时,则按Windows 8的步骤操作。

项目名称 说明 第1章 TextHello 作为第一个项目,它将指导你创建一个简单程序来显示欢迎文本 WPFHello 使用WPF技术在窗口中显示欢迎文本 第2章 PrimitiveDataTypes 演示如何使用基元类型来声明变量,如何向变量赋值,如何在窗口中显示值 MathsOperators 演示了算术操作符(+、–、*、/、%) 第3章 Methods 改进上个项目的代码,体会如何使用方法来建立代码的结构 DailyRate 指导你写自己的方法,运行方法,使用Visual Studio 2012调试器来单步执行方法 使用可选参数的DailyRate 演示如何让方法获取可选参数,如何使用具名参数来调用方法 第4章 Selection 演示如何用嵌套if语句实现复杂逻辑,例如比较两个日期的相等性 SwitchStatement 这个简单的程序使用一个switch语句将字符转换成相应的XML形式 第5章 WhileStatement 使用while语句逐行读取源文件的内容,并在Windows窗体的文本框中显示每一行 DoStatement 使用do语句将十进制数转换成八进制 第6章 MathsOperators 对第2章的MathsOperators项目进行改进,试验会造成程序执行失败的各种未处理的异常。然后,用try和catch关键字使应用程序更健壮,不会因为错误输入或操作而失败 第7章 Classes 演示如何定义自己的类,为它添加了公共构造器、方法和私有字段;还演示如何用new关键字创建类的实例,如何定义静态方法和字段 第8章 Parameters 演示值类型和引用类型的参数的区别,还演示如何使用ref和out关键字

续表

项目名称 说明 第9章 StructsAndEnums 定义结构来表示日期 第10章 Cards 使用数组来建模纸牌游戏中的一手牌 第11章 ParamsArrays 演示如何使用params关键字使方法能接受任意数量的参数 第12章 Vehicles 用继承创建简单的交通工具类,还演示如何定义虚方法 ExtensionMethod 演示如何为int类型创建扩展方法,提供方法将整数从十进制转换成其他进制 第13章 Drawing Using Interfaces 实现图形绘图包的一部分。用接口定义要由几何图形对象公开并实现的方法 Drawing Using Abstract Classes 扩展了Drawing Using Interfaces项目,将几何图形对象的常用功能集成到抽象类中 第14章 GarbageCollectionDemo 演示如何使用Dispose模式来实现异常安全的资源清理 第15章 Drawing Using Properties 扩展第13章的Drawing Using Abstract Classes项目,用属性将数据封装到类中 AutomaticProperties 演示如何为类创建自动属性,如何用它们初始化类的实例 第16章 Indexers 该项目使用了两个索引器,一个根据姓名查找某人的电话号码,另一个根据电话号码查找某人的姓名 第17章 BinaryTree 演示如何使用泛型生成类型安全的结构,可包含任何类型的元素 BuildTree 演示如何使用泛型实现类型安全的方法,可获取任何类型的参数 第18章 Cards 更新第10章的代码,演示如何用集合建模一手牌 第19章 BinaryTree 演示如何实现泛型IEnumerator<T>接口,为泛型Tree类创建枚举器 IteratorBinaryTree 用迭代器为泛型Tree类生成枚举器 第20章 Delegates 演示如何通过委托调用方法,将方法的逻辑和调用方法的应用程序分开 Delegates With Event 演示如何用事件提醒对象发生了某事,如何捕捉事件并执行需要的处理 第21章 QueryBinaryTree 演示如何通过LINQ查询从二叉树对象获取数据

续表

项目名称 说明 第22章 ComplexNumbers 定义新类型来建模复数,并为这种类型实现常用的操作符 第23章 GraphDemo 生成并在WPF窗体上显示复杂图表。使用单线程执行计算 GraphDemo With Tasks 创建多个任务,并行执行图表计算 Parallel GraphDemo 使用Parallel类对创建和管理任务的过程进行抽象 GraphDemo With Cancellation 中途得体地取消任务 ParallelLoop 演示何时不该使用Parallel类创建和运行任务 第24章 GraphDemo 对第23章的同名项目进行修改,使用async关键字和await操作符来异步计算图表数据 PLINQ 使用并行任务,用PLINQ查询数据 CalculatePI 使用统计学采样计算PI的近似值。使用了并行任务 第25章 Customers Without Scalable UI 使用默认Grid控件进行Adventure Works公司的Customers 应用程序的UI布局。控件使用绝对定位,屏幕分辨率和设备大小改变时,不会自动地伸缩 Customers With Scalable UI 使用嵌套Grid控件并定义行和列来实现控件的相对定位。这个版本的UI能自动适应不同的屏幕分辨率和设备大小。但在贴靠视图中表现不佳 Customers With Adaptive UI 对上一个可伸缩UI进行扩展。使用Visual State Manager检测切换到贴靠视图的事件,并相应修改控件布局 Customers With Styles

使用XAML样式更改字体和背景图片

第26章 DataBinding 使用数据绑定在UI中显示从数据源获取的客户资料;还演示了如何实现INotifyPropertyChanged接口,从而允许UI更新客户资料,并将改动发送回数据源 ViewModel 通过实现Model-View-ViewModel模式,将UI同数据源访问逻辑分开 Search 实现Windows 8搜索合约,按名字或姓氏搜索客户 第27章 Data Service 这个解决方案包含一个Web应用程序来提供WCF Data Service,使Customers应用程序能从SQL Server数据库获取客户数据。WCF Data Service通过由实体框架创建的实体模型来访问数据库 Updatable ViewModel 这个解决方案中的Customers项目包含一个扩展的ViewModel,它提供许多命令,允许UI通过WCF Data Service插入和更新客户资料

① 本书将路径“C:\Users\YourName\Documents”简单称为“文档”文件夹。——译注

---------------

  

  ------------------------------------------------------------

  

  ---------------

  

  ------------------------------------------------------------

  

VIII

Visual C# 2012从入门到精通

  

IX

前言