编辑推荐

作为多本畅销教材的作者和北京大学*受学生欢迎的计算机老师之一,《C#程序设计教程(第2版)》作者延续了以往简洁易懂的语言风格和清晰的逻辑结构,系统地介绍了C#的语言机制及其应用。《C#程序设计教程(第2版)》也是中国大学MOOC上“C#程序设计”的配套教材,该课程被教育部认定为“2017年国家精品在线开放课程”。选择由《C#程序设计教程(第2版)》开始学习C#程序设计,读者一定会受益匪浅。

内容简介

C#程序设计教程(第2版)》详细介绍了C#程序设计的基本环境、概念、方法和应用。内容分为C#语言及C#应用两方面:C#语言方面,包括C#基础语法、面向对象的C#语言、C#语言高级特性等;C#应用方面,包括工具类、集合、常用算法、流式文件、文本应用、Windows窗体和控件、图形用户界面、多线程、ADO.NET数据库应用、网络通讯编程等。书中也详细讲解了C#一些新特新如Lambda表达式、Linq、异步编程以及深入理解C#语言。
C#程序设计教程(第2版)》内容详尽、循序渐进,既介绍语法,又讲解语言机制,还注重C#的应用。《C#程序设计教程(第2版)》提供了大量典型实例,并配套有相关的电子资源、课件、视频。
C#程序设计教程(第2版)》内容和组织方式立足高等学校的教学教材,也可作为计算机技术的培训教材,还可作为Coursera、中国大学慕课上“C#程序设计”慕课的配套教材。


目录

目录

第1章C#程序设计简介1-1
1.1C#语言及其环境1-1
1.1.1C#的产生与发展1-1
1.1.2C#的环境——Microsoft.NET1-2
1.1.3C#的特点1-5
1.1.4C#和C、C++的比较1-6
1.1.5C#与Java的比较1-7
1.2简单的C#程序1-8
1.2.1HelloWorld1-8
1.2.2C#程序设计快速入门1-12
1.2.3对象的三个基本要素1-16
1.2.4C#程序的基本构成1-19
1.3程序中的输入输出及运算1-21
1.3.1控制台应用程序的输入输出1-21
1.3.2Windows应用程序输入输出1-23
1.3.3常用的运算1-24
1.4开发工具1-25
1.4.1.NETFrameworkSDK及VisualStudio1-25
1.4.2使用命令行编译及运行程序1-25
1.4.3辅助工具EditPlus1-28
1.4.4辅助工具VisualStudioCode1-31
1.5应用程序类型1-31
1.5.1VisualStudio建立不同类型的应用程序1-31
1.5.2WPF应用程序1-33
1.5.3Web应用程序1-33
1.6面向对象程序设计的基本概念1-34
1.6.1面向对象概述1-34
1.6.2对象、类与实体1-35
1.6.3封装、继承、多态1-37
1.6.4面向对象的软件开发过程1-38
习题11-39

第2章C#语言基础2-1
2.1数据类型、变量与常量2-1
2.1.1数据类型2-1
2.1.2标识符、关键字2-4
2.1.3字面常量2-5
2.1.4变量2-6
2.1.5C#编码惯例与注释2-7
2.2运算符与表达式2-11
2.2.1算术运算符2-11
2.2.2关系运算符2-13
2.2.3逻辑运算符2-13
2.2.4位运算符2-14
2.2.5赋值与强制类型转换2-14
2.2.6条件运算符2-15
2.2.7运算的优先级、结合性2-16
2.3流程控制语句2-17
2.3.1结构化程序设计的三种基本流程2-17
2.3.2简单语句2-17
2.3.3分支语句2-18
2.3.4循环语句2-21
2.3.5跳转语句2-26
2.4数组2-28
2.4.1数组的声明2-28
2.4.2数组的初始化2-31
2.4.3数组元素的使用2-32
2.4.4数组与System.Array2-33
2.4.5使用foreach语句访问数组2-34
2.4.6数组应用举例2-34
习题22-37

第3章类、接口与结构3-1
3.1类、字段、方法3-1
3.1.1定义类中的字段和方法3-1
3.1.2构造方法与析构方法3-3
3.1.3对象的创建与使用3-4
3.1.4方法的重载3-5
3.1.5使用this3-7
3.2属性、索引器3-8
3.2.1属性3-9
3.2.2索引器3-13
3.3类的继承3-16
3.3.1派生子类3-17
3.3.2字段的继承、添加与隐藏3-18
3.3.3方法的继承、添加与覆盖3-18
3.3.4使用base3-20
3.3.5父类与子类的转换以及as运算符3-21
3.3.6属性、索引器的继承3-23
3.4修饰符3-23
3.4.1访问控制符3-24
3.4.2static3-29
3.4.3const及readonly3-31
3.4.4sealed及abstract3-33
3.4.5new、virtual、override3-34
3.4.6一个应用模型——单例(Singleton)3-38
3.5接口3-38
3.5.1接口的概念3-38
3.5.2定义接口3-39
3.5.3实现接口3-41
3.5.4对接口的引用3-42
3.5.5显式接口成员实现3-43
3.6结构、枚举3-45
3.6.1结构3-45
3.6.2枚举3-47
习题33-49

第4章C#高级特性4-1
4.1泛型4-1
4.1.1泛型的基本使用4-1
4.1.2自定义泛型4-2
4.2委托及Lambda表达式4-5
4.2.1委托类型与赋值4-5
4.2.2Lambda表达式4-13
4.2.3使用系统定义的Action及Func4-14
4.3事件4-15
4.3.1事件的应用4-15
4.3.2自定义事件4-16
4.3.3事件的语法细节4-19
4.4异常处理4-20
4.4.1异常的概念4-20
4.4.2捕获和处理异常4-21
4.4.3创建用户自定义异常类4-25
4.4.4重抛异常及异常链接4-26
4.4.5算术溢出与checked4-28
4.5命名空间、嵌套类型、程序集4-29
4.5.1命名空间4-29
4.5.2嵌套类型4-32
4.5.3程序集4-36
4.6C#语言中的其他成分4-41
4.6.1运算符重载4-41
4.6.2使用Attribute4-42
4.6.3编译预处理4-43
4.6.4unsafe及指针4-44
4.6.5C#几个语法的小结4-47
习题44-47

第5章基础类及常用算法1
5.1C#语言基础类1
5.1.1.NETFramework基础类库1
5.1.2Object类2
5.1.3简单数据类型及转换6
5.1.4Math类及Random类7
5.1.5DateTime类及TimeSpan类8
5.1.6Console类11
5.2字符串11
5.2.1String类12
5.2.2StringBuilder类13
5.2.3数据的格式化15
5.3集合类16
5.3.1集合的遍历16
5.3.2List、Stack及Queue类18
5.3.3Dictionary及Hashtable类21
5.3.4其他集合类25
5.4排序与查找26
5.4.1IComparable接口和IComparer接口26
5.4.2使用Array类进行排序与查找27
5.4.3集合类中的排序与查找28
5.4.4自已编写排序程序31
5.5Linq34
5.5.1Linq的基本用法34
5.5.2Linq的查询方法36
5.6遍试、迭代、递归38
5.6.1遍试38
5.6.2迭代40
5.6.3递归42
习题546

第6章流、文件IO6-1
6.1流及二进制输入输出6-1
6.1.1流6-1
6.1.2使用流进行二进制输入输出6-5
6.1.3使用File的二进制功能6-7
6.1.4序列化及反序列化6-7
6.2文本输入输出6-10
6.2.1使用Reader和Writer的文本I/O6-10
6.2.2使用File的文本文件功能6-14
6.2.3标准输入输出6-16
6.2.4应用示例:背单词6-16
6.3文件、目录、注册表6-18
6.3.1文件与目录管理6-18
6.3.2监控文件和目录的改动6-24
6.3.3注册表6-27
6.4环境参数及事件日志6-28
6.4.1命令行参数6-28
6.4.2获得环境参数6-30
6.4.3使用事件日志6-31
6.5程序的调试、追踪与测试6-35
6.5.1程序的调试6-35
6.5.2程序的追踪6-37
6.5.3程序的单元测试6-39
习题66-41

精彩书摘

第1章C#程序设计简介

本章介绍C#语言的特点、开发C#程序的基本步骤、C#程序的构成、基本输入输出以及C#的开发工具等。通过本章的学习,可以对C#程序设计有一个初步的认识。

1.1C#语言及其环境

C#(发音为“CSharp”)是由Microsoft开发的面向对象的编程语言。它继承了C和C++、Java等语言的优点并且有了较大的发展,是迄今为止最为优秀、最为通用的程序设计语言之一。

1.1.1C#的产生与发展

C#是直接从世界上最成功的计算机语言C和C++继承而来,又与Java紧密相关。理解C#的产生与发展有助于C#的学习。

1.结构化编程与C语言

C语言的产生标志着现代编程时代的开始。C语言是20世纪70年代由DennisRitchie在基于UNIX操作系统上创建的。在一定意义上,20世纪60年代的结构化编程造就了C语言。在结构化编程语言产生之前,大型的程序是很难编写的。因为往往在编写大型程序的时候,会由于存在大量的跳转、调用和返回很难进行跟踪调试。结构化的编程语言加入了优化定义的控制语句,子程序中采用了局部变量和其他的改进,使得这种问题得到了解决。C语言是结构化编程语言中最为成功的一种,至今C语言仍用常用的语言之一。

2.面向对象编程与C++语言

C语言还是有它自身的局限性。到了20世纪70年代末期,很多项目的代码长度都接近或者到达了结构化编程方法和C语言能够处理的极限。为了解决这个问题,出现了新的编程方法,即面向对象编程(简称OOP),程序员使用OOP可以编写出更大型的程序。1979年初,BjarneStroustrup在贝尔实验室创造了C++。

C++是C的面向对象的版本。对于C程序员,可以方便地过渡到C++,从而进行面向对象的编程。20世纪90年代中期,C++成为广泛使用的编程语言。

3.网络的发展与Java语言

随着网络的发展,编程语言进入到的下一个主流就是Java。Java的创造工作由1991年在Sun公司开始,其主要发明者是JamesGosling。

Java是一种面向对象的语言,它的语法和思想起源于C++。Java最重要的一方面是具有编写跨平台、可移植代码的能力,Java能够将一个程序的源代码转换到被称为字节码的中间语言,实现了程序的可移植性。该字节码在Java虚拟机上被执行。因此,Java程序可移植到有Java虚拟机的任何环境中。由于Java虚拟机相对比较容易实现,所以适用于大部分的环境。

在Java中采用中间语言是很重要的,在其后的C#中采用了类似的方案。

4.C#语言的产生

Microsoft公司在20世纪90年代末开发了C#,其首席设计师是AndersHeilsberg。

图1?1展示了C#的家族史。C#的祖父是C,C#继承了C的语法、关键词和运算符。C#建立在C++定义的对象模型基础上,并加以改进。

图1?1C#的产生历史

C#起源于C和C++,并且与Java有许多相似之处,同时C#包含了许多创新的特性,这些特性将会在《C#程序设计教程(第2版)》中进行详细的讲解。

前言/序言

作为一种优秀的面向对象语言,C#不仅具有封装、继承与多态等特性,而且还增加了索引、委托、事件、Attribute、Linq等创新性元素。在继承了C++和Java等语言的优点的基础上,C#代表了程序设计语言演变的一个新阶段,这是与现代软件工程相适应的。
C#语言还利用.NETFramework作为其强大的平台,使得它在Windows图形用户界面、ASP.NetWeb应用、以及ADO.Net数据库等方面有广泛的应用,并且C#已经可以运行在Windows、Linux、MacOS等平台上,甚至可以开发跨平台的手机应用。正因为这样,C#是目前主流的程序设计语言之一。
从学习的角度,C#语言的基本语法与传统的C、C++、Java语言有不少的相似性,学习者易于入门,而且使用功能强大的VisualStudio集成开发工具可以进行快速应用开发,因此将C#作为程序设计的教学和开发语言不失为一种好的选择。
对于学习者而言,选择一本好的教材至关重要。笔者基于多年程序设计语言的教学经验,结合个人的软件开发实践,力图突出以下特色:
1.在详细介绍C#语言的语法的同时,还着重讲解C#语言的机制,如类的封装与继承、类型转换、参数传递、虚方法调用、构造与析构、异常处理、迭代器等,让学习者知其然,并知其所以然。
2.对于C#的一些新特性,如Lambda、Linq及异步编程等,也进行了介绍,使学习者能简化代码的书写、提高开发效率。
3.对C#用到的基本类库和基本应用,包括集合、文件、文本界面、图形界面等进行详细讲解,精选大量典型而实用的例子,力图使学习者触类旁通,举一反三。
4.对一些高级应用,如正则表达式、XML、网络信息获取、数据库访问、网络通讯编程等内容也介绍其概念和编程方法,以利于学习者能做出具有实际应用价值的程序。
C#程序设计教程(第2版)》在内容安排上,大致可以划分为四个部分:第一部分介绍了C#语言基础:数据、控制结构、数组、类、接口、结构等;第二部分介绍了C#高级特性,如事件、委托、泛型、Linq、运算符重载等;第三部分是C#的基本类及其在.NET应用:工具类、集合、常用算法、流式文件、文本应用、Windows窗体和控件、图形用户界面;第四部分是C#的高级应用:多线程、正则表达式、XML、网络信息获取、数据库访问、网络通讯编程等,还专门用一章来讲解深入理解C#语言。
C#程序设计教程(第2版)》提供了配套的电子资源,包括源代码、课件、视频,一些应用实例由于源代码较长,书中列出了关键性代码,全部的源代码可以在配套的电子资源中找到。
C#程序设计教程(第2版)》内容和组织方式立足高等学校的教学教材,也可作为计算机技术的培训教材或自学用书。笔者还在coursera、中国大学慕课等平台上开设了“C#程序设计”慕课(MOOC),《C#程序设计教程(第2版)》也适合作为慕课的配套教材。
C#程序设计教程(第2版)》从第一版以来,得到全国不少师生及慕课学员的意见和建议,在此表示感谢。对于书中仍然存在的不足,也恳请读者批评指正。

唐大仕
于北京大学信息科学技术学院




其他推荐