本书以Visual Studio 2012为平台介绍C#程序设计方法,包括.NET Framework体系结构、C#语言基础、数组和集合、面向对象程序设计、继承和接口设计、泛型和反射、枚举器和迭代器、Windows窗体和控件设计、图形设计、文件操作、错误调试和异常处理、多线程和异步程序设计、ADO.NET数据库访问技术、XML应用、LINQ和Web应用程序设计等内容。
C#是微软公司结合C/C++和Java等语言的特点设计的一种新的程序设计语言,它基于.NET Framework通用平台,C#程序开发人员可以直接使用.NET Framework中完整且丰富的类库设计出跨平台的软件系统。C#具有简单易学、使用方便、采用可视化设计方法开发复杂软件系统的特点。本书以Visual Studio 2012为平台介绍C#程序的设计方法。
1. 本书读者
本书读者需具备简单的编程经验,并对Windows的基本操作有所了解。本书可以作为大专院校的计算机专业和非计算机专业学生学习C#编程的教材,尤其适合作为高职高专C#应用方向的教材,也可供具有Windows初步知识的计算机爱好者参阅。
2. 本书内容
本书分为18章,第1章为C#语言概述; 第2章为C#程序设计基础; 第3章为C#控制语句; 第4章为数组和集合; 第5章为面向对象程序设计; 第6章为继承和接口设计; 第7章为泛型和反射; 第8章为枚举器和迭代器; 第9章为Windows应用程序设计; 第10章为用户界面设计; 第11章为图形设计; 第12章为文件操作; 第13章为错误调试和异常处理; 第14章为多线程和异步程序设计; 第15章为ADO.NET数据库访问技术; 第16章为XML及其应用; 第17章为LINQ技术; 第18章为Web应用程序设计。
与第2版相比,本书增加了枚举器、迭代器、异步程序设计和LINQ等内容,并结合C# 2012的特点对相关知识点进行了更新。
书中各章提供了大量的练习题和上机实验题供读者选用。
3. 本书特色
内容全面、知识点翔实: 在内容讲授上力求翔实和全面,细致地解析每个知识点和各知识点之间的联系。
条理清晰、讲解透彻: 从介绍C#的基本概念出发,由简单到复杂,循序渐进地介绍C#面向对象的程序设计方法。
实例丰富、实用性强: 列举了大量的应用示例,读者通过上机模仿可以大大提高使用C#开发控制台应用程序、Windows窗体应用程序和Web应用程序的能力。
4. 教学资源
为了方便教师教学和学生学习,本书提供了全面而丰富的教学资源,配套的教学资源包的内容如下。
① PPT: 供任课教师在教学中使用。
② 源程序代码: 存放在“\C#程序”文件夹中,每章对应一个子文件夹,例如“\C#程序\ch2”文件夹包含第2章的所有例子程序。
③ 练习题—单项选择题答案: 存放在“\单项选择题答案”文件夹中。
④ 练习题—编程题源程序代码: 存放在“\C#编程题”文件夹中,每章对应一个子文件夹,例如“\C#编程题\ch2”文件夹包含第2章的所有编程题的程序。
⑤ 练习题—上机实验题源程序代码: 存放在“\C#实验”文件夹中,每章对应一个子文件夹,例如“\C#实验\ch2”文件夹包含第2章的上机实验题的程序。
上述所有教学资源均可从清华大学出版社网站免费下载。欢迎使用本书的教师和读者与编者联系,联系邮箱为licb1964@126.com。
5. 致谢
本教材的编写工作得到武汉大学教务部的教改项目的资助,清华大学出版社给予了大力支持,连续6届选课的同学提出了许多宝贵的建议,编者在此表示衷心感谢!
编者
2015年7月
第1章C#语言概述
1.1什么是C#语言
1.1.1C#语言的发展历程
1.1.2C#语言的特点
1.1.3用C#编写的应用程序类型
1.2.NET Framework
1.2.1什么是.NET Framework
1.2.2开发托管代码的过程
1.2.3C#语言与.NET Framework
1.3Visual Studio 2012的安装、启动和退出
1.3.1Visual Studio 2012的安装
1.3.2配置Visual C#开发环境
1.3.3Visual Studio 2012的启动
1.3.4Visual Studio 2012的退出
1.4Visual C#集成开发环境
1.4.1启动Visual C#集成开发环境
1.4.2Visual C#的菜单栏
1.4.3Visual C#的工具栏
1.4.4解决方案资源管理器
1.4.5编辑器的设置
1.5一个简单的C#程序
1.5.1代码分析
1.5.2项目的构成
1.5.3控制台应用程序中的基本元素
练习题1
第2章C#程序设计基础
2.1标识符
2.2C#中的数据类型
2.2.1值类型
2.2.2引用类型
2.3C#中的变量和常量
2.3.1变量
2.3.2值类型变量和引用类型变量的区别
2.3.3常量
2.4类型的转换
2.4.1隐式转换
2.4.2显式转换
2.4.3装箱和拆箱
2.5结构类型和枚举类型
2.5.1结构类型
2.5.2枚举类型
2.6C#运算符和表达式
2.6.1算术运算符
2.6.2字符串运算符
2.6.3赋值运算符
2.6.4关系运算符
2.6.5逻辑运算符
2.6.6位运算符
2.6.7条件运算符
2.6.8其他运算符
2.6.9运算符的优先级
2.7C#中的常用类和结构
2.7.1String类
2.7.2Math类
2.7.3Convert类
2.7.4DateTime结构
练习题2
第3章C#控制语句
3.1选择控制语句
3.1.1if语句
3.1.2if…else语句
3.1.3if…else if语句
3.1.4switch语句
3.2循环控制语句
3.2.1while语句
3.2.2do…while语句
3.2.3for语句
3.3跳转语句
3.3.1break语句
3.3.2continue语句
3.3.3goto语句
练习题3
第4章数组和集合
4.1一维数组
4.1.1一维数组的定义
4.1.2一维数组的动态初始化
4.1.3一维数组的静态初始化
4.1.4访问一维数组中的元素
4.1.5一组数组的越界
4.2二维数组
4.2.1二维数组的定义
4.2.2二维数组的动态初始化
4.2.3二维数组的静态初始化
4.2.4访问二维数组中的元素
4.3交错数组
4.3.1交错数组的定义和初始化
4.3.2访问交错数组中的元素
4.4Array类
4.4.1Array类的属性和方法
4.4.2Array类中方法的使用
4.5ArrayList类
4.5.1定义ArrayList类的对象
4.5.2ArrayList类的属性
4.5.3ArrayList类的方法
4.6List<T>类
4.6.1定义List<T>类的对象
4.6.2List<T>类的属性
4.6.3List<T>类的方法
练习题4
第5章面向对象程序设计
5.1面向对象程序设计概述
5.1.1面向对象的基本概念
5.1.2面向对象的优点
5.2类
5.2.1类的声明
5.2.2类的成员
5.2.3分部类
5.2.4类和结构类型的差异
5.3对象
5.3.1定义类的对象
5.3.2访问对象的字段
5.3.3调用(或访问)对象的方法
5.3.4访问对象成员的限制
5.3.5类对象的内存空间分配方式
5.4命名空间
5.4.1命名空间概述
5.4.2使用命名空间
5.5构造函数和析构函数
5.5.1构造函数
5.5.2析构函数
5.6静态成员
5.6.1静态字段
5.6.2静态方法
5.7属性
5.7.1什么是属性
5.7.2属性的声明及使用
5.7.3自动实现的属性
5.8方法
5.8.1方法的定义
5.8.2方法的返回值
5.8.3方法的参数类型
5.8.4可选参数
5.8.5this关键字
5.8.6方法的重载
5.8.7运算符重载
5.9对象的复制
5.9.1浅复制
5.9.2深复制
5.10嵌套类
5.10.1嵌套类的声明
5.10.2嵌套类和包含类的关系
5.11索引器
5.11.1什么是索引器
5.11.2声明索引器
5.11.3使用其他非整数的索引类型
5.12委托
5.12.1什么是委托
5.12.2定义和使用委托
5.12.3委托对象封装多个方法
5.12.4委托与匿名方法
5.12.5委托和Lambda(λ)表达式
5.13事件
5.13.1事件处理机制
5.13.2事件的创建和使用
练习题5
第6章继承和接口设计
6.1继承
6.1.1什么是继承
6.1.2派生类的声明
6.1.3基类成员的可访问性
6.1.4按次序调用构造函数和析构函数
6.1.5使用sealed修饰符禁止继承
6.2多态性
6.2.1隐藏基类方法
6.2.2重写基类方法
6.2.3dynamic类型
6.2.4对象的类型判别和类对象引用的转换
6.3抽象类
6.3.1抽象类的特性
6.3.2抽象方法
6.3.3抽象属性
6.4接口
6.4.1接口的特性
6.4.2接口的定义
6.4.3接口的成员
6.4.4接口的实现
6.4.5接口映射
6.4.6接口实现的继承
6.4.7重新实现接口
6.5接口在集合排序中的应用
6.5.1ArrayList类的排序方法
6.5.2IComparable接口
6.5.3IComparer接口
练习题6
第7章泛型和反射
7.1泛型
7.1.1什么是泛型
7.1.2泛型的声明和使用
7.1.3泛型的MSIL代码结构
7.1.4类型参数的约束
7.1.5泛型的继承
7.1.6泛型接口和委托
7.2反射
7.2.1反射概述
7.2.2反射中常用的类
7.2.3反射的应用示例
练习题7
第8章枚举器和迭代器
8.1枚举器
8.1.1枚举器概述
8.1.2IEnumerator接口
8.1.3IEnumerable接口
8.1.4泛型枚举接口
8.2迭代器
8.2.1迭代器概述
8.2.2迭代器方法
8.2.3get访问器
练习题8
第9章Windows应用程序设计
9.1窗体设计
9.1.1创建Windows窗体应用程序的过程
9.1.2窗体的类型
9.1.3窗体的常用属性
9.1.4窗体的常用事件
9.1.5窗体的常用方法
9.1.6多个窗体之间的调用
9.1.7窗体上各事件的引发顺序
9.1.8焦点与Tab键次序
9.2常用的控件设计
9.2.1控件概述
9.2.2富文本框控件
9.2.3分组框控件
9.2.4面板控件
9.2.5复选框控件
9.2.6单选按钮控件
9.2.7图片框控件
9.2.8组合框控件
9.2.9列表框控件
9.2.10带复选框的列表框控件
9.2.11定时器控件
9.2.12滚动条控件
9.2.13月历控件
9.2.14日期/时间控件
9.2.15超链接标签控件
9.3多个窗体之间的数据传递
9.3.1通过静态字段传递数据
9.3.2通过构造函数传递数据
9.4多文档窗体
9.4.1MDI父窗体的属性、事件和方法
9.4.2MDI子窗体的属性
9.4.3创建MDI父窗体及其子窗体
9.5窗体设计的事件机制
9.5.1窗体事件的处理原理
9.5.2在Windows窗体中创建事件过程
9.5.3在执行时为Windows窗体创建事件过程
9.5.4将多个事件连接到Windows窗体中的单个事件过程
练习题9
第10章用户界面设计
10.1菜单设计
10.1.1菜单的基本结构
10.1.2创建下拉式菜单
10.1.3设计弹出式菜单
10.2通用对话框
10.2.1打开文件对话框
10.2.2保存文件对话框
10.2.3颜色对话框
10.2.4字体对话框
10.3图像列表框控件
10.3.1建立ImageList控件
10.3.2ImageList控件的属性
10.3.3Images集合的属性和方法
10.4树形视图控件
10.4.1TreetView控件概述
10.4.2建立TreeView控件
10.4.3TreeView控件的属性
10.4.4TreeView控件的事件和方法
10.4.5Nodes集合和TreeNode对象
10.4.6执行时TreeView控件的基本操作
10.5列表视图控件
10.5.1ListView控件概述
10.5.2建立ListView控件
10.5.3ListView控件的属性
10.5.4ListView控件的事件和方法
10.5.5Items集合和ListViewItem对象
10.5.6Columns集合和ColumnHeader对象
10.5.7执行时ListView控件的基本操作
10.6工具栏控件
10.6.1建立ToolStrip控件
10.6.2ToolStrip控件的属性
10.6.3Items集合和ToolStripButton对象
10.7状态栏控件
10.7.1建立StatusStrip控件
10.7.2StautsStrip控件的属性
练习题10
第11章图形设计
11.1绘图概述
11.1.1绘图的基本知识
11.1.2什么是GDI+
11.1.3Graphics类
11.2绘图的基本步骤
11.3绘制图形
11.3.1绘制直线
11.3.2绘制矩形
11.3.3绘制多边形
11.3.4绘制圆和椭圆
11.3.5绘制弧线
11.3.6绘制饼形
11.3.7绘制非闭合曲线
11.3.8绘制闭合曲线
11.3.9绘制贝济埃曲线
11.4创建画图工具
11.4.1创建画笔
11.4.2创建笔刷
11.4.3创建字体
11.5绘制文本
练习题11
第12章文件操作
12.1文件和System.IO模型概述
12.1.1文件的类型
12.1.2文件的属性
12.1.3文件的访问方式
12.2System.IO模型
12.2.1什么是System.IO模型
12.2.2文件编码
12.2.3C#的文件流
12.3文件夹和文件的操作
12.3.1文件夹的操作
12.3.2文件的操作
12.4FileStream类
12.5文本文件的操作
12.5.1StreamReader类
12.5.2StreamWriter类
12.6二进制文件的操作
12.6.1BinaryWriter类
12.6.2BinaryReader类
12.6.3二进制文件的随机查找
12.7序列化和反序列化
12.7.1序列化
12.7.2反序列化
练习题12
第13章错误调试和异常处理
13.1错误的分类
13.2程序调试
13.2.1调试工具
13.2.2设置断点
13.2.3调试过程
13.3异常处理
13.3.1异常概述
13.3.2异常处理语句
13.3.3常用的异常类
练习题13
第14章多线程和异步程序设计
14.1多线程程序设计
14.1.1多线程概述
14.1.2线程命名空间
14.1.3Thread类及其应用
14.1.4线程优先级和线程调度
14.1.5线程互斥
14.1.6线程同步
14.1.7volatile关键字
14.1.8线程池
14.2异步程序设计
14.2.1异步的概念
14.2.2同步和异步的差别
14.2.3TAP异步模式编程
练习题14
第15章ADO.NET数据库访问技术
15.1数据库概述
15.1.1关系数据库的基本结构
15.1.2结构化查询语言
15.2ADO.NET模型
15.2.1ADO.NET简介
15.2.2ADO.NET体系结构
15.2.3ADO.NET数据库的访问流程
15.3ADO.NET的数据访问对象
15.3.1OleDbConnection对象
15.3.2OleDbCommand对象
15.3.3OleDbDataReader对象
15.3.4OleDbDataAdapter对象
15.4DataSet对象
15.4.1DataSet对象概述
15.4.2Dataset对象的属性和方法
15.4.3Tables集合属性和DataTable对象
15.4.4Columns集合属性和DataColumn对象
15.4.5Rows集合属性和DataRow对象
15.5数据绑定
15.5.1数据绑定概述
15.5.2BindingNavigator控件
15.6DataView对象
15.6.1DataView对象概述
15.6.2DataView对象的列排序设置
15.6.3DataView对象的过滤条件设置
15.7DataGridView控件
15.7.1创建DataGridView对象
15.7.2DataGridView的属性、方法和事件
15.7.3DataGridView与DataView对象结合
15.7.4通过DataGridView对象更新数据源
练习题15
第16章XML及其应用
16.1XML概述
16.2XML语法规则
16.2.1XML文档中的有关术语
16.2.2XML文档的结构
16.2.3XML文档的语法规定
16.3XPath表达式
16.3.1路径匹配
16.3.2谓词
16.3.3属性匹配
16.3.4通配符
16.3.5XPath轴
16.4用.NET Framework类操作XML文档
16.4.1XML文档操作类
16.4.2XML文档的结点操作
16.5DataSet和XML文档的相互转换
16.5.1将XML文档转换成DataSet数据
16.5.2将DataSet数据转换成XML文件
练习题16
第17章LINQ技术
17.1LINQ概述
17.1.1什么是LINQ
17.1.2LINQ提供程序
17.2使用LINQ to Objects
17.2.1LINQ的基本操作
17.2.2LINQ查询子句
17.2.3方法查询
练习题17
第18章Web应用程序设计
18.1ASP.NET概述
18.1.1ASP.NET的发展历程
18.1.2ASP.NET网页的组成
18.1.3ASP.NET网页的执行方式
18.1.4ASP.NET网页的代码编写模型
18.2创建一个简单的Web应用程序
18.3基本ASP.NET服务器控件
18.3.1服务器控件概述
18.3.2Label、Button和TextBox控件
18.3.3DropDownList控件
18.3.4CheckBox、CheckBoxList、RadioButton和
RadioButtonList控件
18.3.5数据验证控件
18.3.6链接控件
18.4高级ASP.NET服务器端控件
18.4.1SqlDataSource控件
18.4.2GridView控件
18.4.3DetailsView控件
练习题18
参考文献