C#程序设计(第二版)pdf下载pdf下载

C#程序设计(第二版)百度网盘pdf下载

作者:
简介:本篇主要提供C#程序设计(第二版)pdf下载
出版社:
出版时间:2017-01
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

编辑推荐

  1.以通俗易懂的语言、生动有趣的示例来讲解C#各个方面的知识,内容安排兼顾广度、深度,紧跟C#发展动向,知识新颖、内容丰富。开发工具使用Visual Studio 2015,内容既囊括了数据类型、运算符、程序控制、数组、字符串等传统内容,也涵盖了面向对象、Windows Form 程序设计、文件、集合、泛型、GDI+、多线程、序列化、SQL、ADO.NET、实用类库等。

  2.全书讲解过程中配备了大量示例,示例简短精炼,融知识性、趣味性于一体。为了给读者释疑解惑,在每章都安排了问与答环节。练习方面,也是分层递进,注重梯度,综合性和难度逐步提升,符合一般的学习规律。


内容简介

  《C#程序设计(第二版)》以通俗易懂的语言、生动有趣的示例来讲解C#多个方面的知识,内容安排兼顾广度、深度,紧跟C#发展动向,知识新颖,内容丰富。开发工具使用Visual Studio 2015,内容囊括数据类型、运算符、程序控制、面向对象、数组、字符串、Windows Form程序设计、文件、集合、泛型、GDI+、多线程、序列化、SQL、ADO.NET、实用类库等。

  全书讲解过程中配备了大量示例,示例简短精炼,融知识性趣味性于一体。为了给读者释疑解惑,也为了给部分学有余力的读者提供深入学习的窗口,在每章都安排了问与答环节,讲解了一些容易混淆的问题或者扩展一些课堂内的知识。练习方面,也是分层递进,注重梯度,按课堂练习→课堂思考→课后思考与练习→实战任务,逐层深入,难度逐步提升,符合一般的学习规律。另外,在实战任务或者思考与练习中设计了不少具有实用价值的编程练习,使读者在学习的过程中不会感到编程枯燥无趣,体会到用C#编程其乐无穷。

  本书适合大中专院校、培训机构的学生及.NET爱好者使用,可用作C#面向对象程序设计、.NET Framework程序设计、WinForm应用开发、.NET下的数据库应用开发等课程的教材。


内页插图

目录

第1章概述

1.1.NET

1.2C#

1.3VS开发环境

1.4编程初试

1.4.1控制台程序

1.4.2WinForm程序

1.5问与答

1.5.1学习.NET相关技术,将来能干什么

1.5.2何谓注释,C#中的注释有几种

1.5.3使用VS.NET时有什么技巧

1.5.4VS太大,是否有更小巧的C#学习开发环境

1.6思考与练习

1.7实战任务

第2章数据类型与运算符

2.1常量与变量

2.1.1常量

2.1.2变量

2.1.3变量的命名

2.1.4变量的命名法

2.2简单数据类型

2.2.1bool类型

2.2.2整型类型

2.2.3char类型

2.2.4小数类型

2.3枚举类型

2.4结构类型

2.5隐式类型变量

2.6运算符

2.6.1算术运算符

2.6.2赋值运算符

2.6.3关系运算符与逻辑运算符

2.6.4位运算符

2.6.5条件运算符

2.6.6自增与自减

2.6.7运算符的优先级

2.7转换

2.7.1隐式转换

2.7.2显式转换

2.7.3Type.Parse

2.7.4Convert类

2.7.5装箱与拆箱

2.7.6as & is

2.8问与答

2.8.1数值类型那么多,怎样记忆各类型的取值范围

2.8.2如何知道数值类型占用多大存储空间

2.8.3数值运算中,除数不能为零吗

2.8.40/0.0=?

2.8.5NaN和Infinity参与计算时,结果如何

2.8.6定义枚举类型时,第一个枚举对应的数值必须为0吗

2.8.7定义枚举类型时,各个枚举项对应的数值必须连续吗

2.8.8如何更改枚举类型元素的数据类型

2.8.9各种类型的默认值分别是什么

2.8.10枚举类型的位操作是什么意思

2.9思考与练习

2.10实战任务

第3章程序控制

3.1选择语句

3.1.1if语句

3.1.2switch语句

3.2循环语句

3.2.1for语句

3.2.2while语句

3.2.3do…while语句

3.3跳转语句

3.3.1break语句

3.3.2continue语句

3.3.3goto语句

3.3.4return语句

3.3.5throw语句

3.4问与答

3.4.1if和switch分别应用于什么场合

3.4.2if和switch的各个分支的书写顺序有影响吗

3.4.3如何避免太深的嵌套

3.4.4for、while、do…while分别应用于什么场合

3.4.5如何知道程序执行耗费的时间

3.4.6如何产生随机数

3.4.7什么叫程序集

3.5思考与练习

3.6实战任务

第4章面向对象基础

4.1类与对象

4.2字段

4.3属性

4.3.1常规属性

4.3.2自动属性

4.4索引器

4.5方法

4.5.1方法的定义与使用

4.5.2变量作用域

4.5.3方法重载

4.5.4参数的个数不定问题——params

4.5.5ref与out

4.5.6this

4.6Main()函数

4.7构造函数

4.8static

4.9析构函数

4.10委托

4.10.1委托使用三步曲

4.10.2多播委托

4.11匿名方法

4.12Lambda表达式

4.13事件

4.13.1事件使用三步曲

4.13.2三类事件

4.14继承

4.14.1继承的实现

4.14.2抽象类及抽象方法

4.14.3类的密封

4.14.4继承过程中构造函数的执行顺序及调用

4.14.5protected修饰符

4.15多态

4.16接口

4.17匿名类型

4.18结构

4.18.1DateTime

4.18.2TimeSpan

4.19object类

4.19.1相等问题

4.19.2GetType()

4.19.3ToString()

4.20问与答

4.20.1什么是命名空间

4.20.2readonly与const究竟有何区别

4.20.3什么是分部类

4.20.4密封类的扩展——扩展方法

4.20.5is和as——兼谈如何让singer不要调用基类方法

4.20.6重写与重载

4.20.7抽象方法和虚方法

4.20.8接口、抽象类、类与结构

4.20.9接口中有重名的方法该如何办

4.20.10base与this

4.20.11什么是运算符重载

4.20.12如何给自定义的结构定义相等逻辑

4.21思考与练习

4.22实战任务

第5章数组

5.1声明及初始化

5.2访问与遍历

5.3Array

5.4聪明的数组——索引器

5.5问与答

5.5.1如何使用Array.Sort()来排序对象数组

5.5.2数组的大小真的没法调整吗

5.5.3如何查找数组中具有特定特征的元素

5.5.4索引器的参数类型一定要为int吗

5.5.5如何不计算即可获得最大值、最小值、和值、平均值

5.6思考与练习

5.7实战任务

第6章字符串

6.1字符串及其转义符

6.1.1字符串及其构造

6.1.2字符转义

6.2常用方法

6.2.1string类的方法

6.2.2字符串对象的方法

6.3StringBuilder

6.4编码

6.5问与答

6.5.1s=null,s=string.Empty与s =""

6.5.2字符串与数组之间如何互相转化

6.5.3字符串与字节数组之间的转换有何意义

6.5.4各种编码之间如何转换

6.6思考与练习

6.7实战任务

第7章WinForm初步

7.1窗体

7.2控件常用操作及其键盘和鼠标事件

7.2.1控件常用操作

7.2.2键盘事件处理

7.2.3鼠标事件处理

7.3基本控件

7.3.1Label控件

7.3.2Button控件

7.3.3RadioButton控件

7.3.4CheckBox控件

7.3.5TextBox控件

7.3.6ListBox控件

7.3.7ComboBox控件

7.3.8PictureBox控件

7.3.9NumericUpDown控件

7.3.10ProgressBar控件

7.3.11HScrollBar控件和VScrollBar控件

7.3.12TrackBar控件

7.3.13ToolTip控件

7.3.14GroupBox控件

7.3.15Panel控件

7.3.16MonthCalendar控件

7.4常用组件

7.4.1Timer组件

7.4.2ImageList组件

7.5菜单

7.5.1MenuStrip

7.5.2ContextMenuStrip

7.5.3ToolStrip

7.5.4StatusStrip

7.6对话框

7.6.1OpenFileDialog

7.6.2SaveFileDialog

7.6.3FontDialog

7.6.4ColorDialog

7.6.5FolderBrowserDialog

7.7高级控件

7.7.1RichTextBox控件

7.7.2CheckedListBox控件

7.7.3TabControl控件

7.7.4ListView控件

7.7.5TreeView控件

7.7.6WebBrowser控件

7.8COM组件

7.8.1Shockwave Flash Object组件

7.8.2Windows Media Player组件

7.9MDI

7.10问与答

7.10.1键盘事件KeyDown、KeyUp和KeyPress有何关系

7.10.2Click和MouseClick有何关系

7.10.3多种鼠标事件有何关系

7.10.4如何获取应用程序的运行环境信息

7.10.5如何获取应用程序的运行目录

7.10.6如何实现拖放

7.10.7关于剪贴板

7.10.8如何动态构建控件树

7.10.9如何实现窗体间的数据交互

7.11思考与练习

7.12实战任务

第8章文件

8.1文件系统

8.1.1驱动器访问

8.1.2目录访问

8.1.3文件访问

8.1.4路径

8.2文件处理流

8.2.1FileStream

8.2.2StreamReader与StreamWriter

8.2.3BinaryReader与BinaryWriter

8.3问与答

8.3.1如何创建临时文件

8.3.2如何比较两个文件是否一样

8.4思考与练习

8.5实战任务

第9章集合

9.1普通集合

9.1.1ArrayList

9.1.2Queue

9.1.3Stack

9.1.4Hashtable

9.1.5SortedList

9.1.6BitArray

9.2泛型

9.3泛型集合

9.3.1ListT

9.3.2QueueT和StackT

9.3.3DictionaryK,V和KeyValuePairK, V

9.3.4SortedListK,V

9.3.5HashSetT

9.4问与答

9.4.1集合中的元素应该如何正确删除

9.4.2如何使用内置排序器来实现ArrayList排序——IComparer

9.4.3如何完全自定义排序规则来排序

9.4.4IEnumerable和IEnumerator有什么作用和特性

9.4.5什么是可空类型

9.4.6什么是Tuple

9.4.7泛型变量的默认值是多少

9.4.8针对如下泛型方法,下面的调用代码可行吗

9.4.9泛型的比较问题

9.4.10HashSetT的扩展方法

9.4.11集合的运算

9.5思考与练习

9.6实战任务

第10章GDI+

10.1概述

10.2辅助绘图对象

10.2.1Point结构

10.2.2Size结构

10.2.3Rectangle结构

10.2.4Color结构

10.2.5Font类

10.2.6Graphics类

10.3基本绘图工具

10.3.1Pen

10.3.2Brush

10.4图像处理

10.4.1绘制直线

10.4.2绘制矩形

10.4.3绘制多边形

10.4.4绘制曲线

10.4.5绘制椭圆

10.4.6绘制图像

10.5常见应用

10.5.1格式转换

10.5.2水印

10.5.3灰化

10.5.4底片

10.5.5浮雕

10.5.6文本打印

10.6问与答

10.6.1如何实现网页颜色与Color的转换

10.6.2Math类

10.7思考与练习

10.8实战任务

第11章多线程

第12章序列化

第13章压缩与解压

第14章SQL

第15章ADO.NET


精彩书摘

  第3章程 序 控 制

  一个合理实用的程序,不可能是从头至尾一行一行地依次顺序执行的。程序的执行顺序在更多的场合应该适当地进行改变。这种改变程序从第一行依次顺序执行到最后一行的机制即称为程序控制。程序控制语句有3类: 选择语句、循环语句和跳转语句。这3类语句构成了由简单语句搭建程序大厦的基石。

  3.1选 择 语 句

  选择语句有if语句和switch语句,其中尤其以if语句最为常见。

  3.1.1if语句

  if语句是最基本最常见的程序流程控制语句。if可以配合else或者else if来无限扩展选择执行的分支,当然在实际编码过程中,不会写很多的if和else if。if语句可能会有如下几种使用形式。无论采用下面的哪种方式,即使分支再多,最多也只会有一个分支获得运行。

  (1) 一个分支: if (条件) {语句序列; }。

  (2) 两个分支: if (条件) {语句序列; } else {语句序列; }。

  (3) 多分支: if (条件) {语句序列; } else if {语句序列; }…else {语句序列; }。

  (4) 嵌套: if (条件){ if语句序列;} else { if语句序列;}。

  其执行机制是: 判断各个条件,哪个条件成立则执行哪个分支相应的语句序列。若所有的条件都不成立,则直接执行整个if块后的语句。

  例如,若有一语音播报程序,当获知客户的性别为男时,可以输出“先生,你好!”,反之如果是女士时,则输出“女士,你好!”。则可能的参考代码如下。

  Console.Write("请输入您的性别: ");

  string sSex=Console.ReadLine();

  if (sSex=="男")

  Console.WriteLine("先生,你好!");

  else

  Console.WriteLine("女士,你好!");

  上面的程序即采用的形式(2),如果能按照预期输入,程序运行自然良好。程序执行结果如图31所示。

  但是若用户随便输入,只要不输入“男”,则上面的程序都将把客户视为女性,自然不合理。例如如图32所示的输出。

  图31两分支的if语句——正常执行

  图32两分支的if语句——不正常执行

  所以可以稍加修改,改善后的代码如下:

  Console.Write("请输入您的性别: ");

  string sSex=Console.ReadLine();

  if (sSex=="男")

  Console.WriteLine("先生,你好!");

  else if(sSex=="女")

  Console.WriteLine("女士,你好!");

  else

  Console.WriteLine("对不起,你是人妖吧?!");

  此代码即形式(3)。

  另外,为了给客户的提醒更具体点,比如根据当前时间,显示早上好、中午好、下午好、晚上好等比较具体的问候语,则可以编写如下代码:

  //如下仅考虑上午好和下午好两种问候; 并且如下关于时间的判断并不对,此处仅为演示之用,聪明的您可以将其修改的更加合理。

  //其中DateTime.Now.Hour是用来获取当前时间的小时部分

  Console.Write("请输入您的性别: ");

  string sSex=Console.ReadLine();

  if (sSex=="男")

  {

  if(DateTime.Now.Hour>12)

  Console.WriteLine("先生,下午好!");

  else

  Console.WriteLine("先生,上午好!");

  }

  else if(sSex=="女")

  {

  if(DateTime.Now.Hour>12)

  Console.WriteLine("女士,下午好!");

  else

  Console.WriteLine("女士,上午好!");

  }

  else

  Console.WriteLine("对不起,输入有误!");

  观察上面的代码,不难发现,此即形式(4),即if的嵌套使用。

  课堂练习:

  请编写一个程序,根据用户输入的分数,来输出其分数是优秀、良好、中等、及格或者不及格(分级可以根据平时百分制的常规分级认定)。

  3.1.2switch语句

  switch语句与if语句一样,也是在众多分支中选择一个匹配的分支来执行。然而两者并不是完全一样,并且在更多的情况下,对程序编码人员来说,用if语句会更习惯些。

  其语法形式如下:

  ……

前言/序言

  前言

  C#作为.NET Framework下的首选语言,是一种简洁优雅、多用途、面向对象的现代化语言,它兼具C语言的语法特征、Visual Basic的快速开发特征、Java的虚拟机运行特征,可谓集百家之长。

  目前开设.NET相关课程的高校越来越多,相关的课程主要涉及如下几个方面: C#面向对象程序设计、.NET Framework程序设计、WinForm应用开发、ASP.NET Web应用开发、WPF程序设计、Silverlight开发、Windows Phone开发、.NET下的数据库应用开发等。

  虽然目前市面上关于C#的教材很多,不过在我们近几年的教学过程中,却发现这些教材或多或少存在一些缺陷和不足之处,总结如下:

  (1) 内容陈旧。有些教材在内容安排上过于陈旧,仍然只讲C#2.0的知识。

  (2) 讲解方法不合理。有的教材在讲解C#的基础知识时,大量使用庞大的示例,动辄好几页的代码; 而有的教材则喜欢使用数据结构的知识来讲解C#的基础知识。我们认为,目前有一部分学生(包括很多IT从业人员),数据结构方面的知识并没完全理解,在这种情况下,使用数据结构的例子来讲解C#新的基础知识,对学生无疑是雪上加霜。这样容易导致学生学习重点转移,甚至有可能打击学生的学习兴趣。

  (3) 讲解抽象或者死板。不少教材讲解太抽象,讲解多而实例少,学生学习效果不佳。有的教材甚至从MSDN上复制不少内容,虽然MSDN的内容权威,但是MSDN上的很多叙述拗口、让人费解。

  (4) 概念性错误。少数教材在基本概念性知识方面存在错误,如DateTime、TimeSpan是典型的结构,好几套教材都称之为类,这样基本性的错误容易误导学生对这两种数据类型的理解。

  (5) 示例多、讲解少。有些教材或者书籍,具有大量的示例,但却缺少基础的讲解,仅仅只是大量示例的罗列而已,缺少对本质内容的讲解,学生也因此理解不到位,最终只会些花招而内功不足。这些书籍可以作为教材的有益补充,用作课后练习之用。

  鉴于以上一些原因,我们编著了本书。本书以通俗易懂的语言、生动有趣的示例来讲解C#多方面的知识,内容安排兼顾广度、深度,紧跟C#发展动向,知识新颖,内容丰富。本书代码开发工具使用Visual Studio 2015,内容既囊括了数据类型、运算符、程序控制、数组、字符串等传统内容,还涵盖了面向对象、Windows Form程序设计、文件、集合、泛型、GDI+、多线程、序列化、SQL、ADO.NET、实用类库等。

  本书具有如下特点:

  (1) 语言通俗易懂。在写作本书的过程中,在内容的讲解上力求通俗易懂,但这样做的风险很大。因为通俗易懂往往和精确是一对矛盾。虽然从MSDN复制内容过来既轻松又权威,不用担心出错,不过如果这样,也就没必要写这本书了。我们的目的,就是在尽量保证准确的前提下,把知识讲解得易懂。

  (2) 示例简短精炼。我们认为,学习新知识时,不是缺少长篇累牍的代码,而是缺少针对性强的精炼小示例。全书配套大量精选示例,帮助读者理解所学知识。

  (3) 示例融知识性和趣味性于一体。本书中很多的示例、思考与练习、实战任务等都来自于我们长期的教学积累,不少示例生动、有趣而又具有实用价值,学生在学习的过程中不会感到编程枯燥无趣,当经过认真思考并动手实践得到正确结果后,会充满成就感而觉得用C#编程其乐无穷。

  (4) 内容新颖全面。除了上述所讲的内容外,细节知识方面涉及到隐式类型变量、匿名方法、Lambda表达式、可空类型、字符编码、扩展方法、Tuple、图像算法及应用、压缩解压等诸多新颖或实用的知识,还融入了不少编程经验体会。

  (5) 重点、难点突出。本书内容全面充实,重点、难点突出,如对面向对象花了大篇幅进行全面细致的讲解,这是整个课程体系的基础核心所在。

  (6) 思考练习层层递进,注重梯度。练习方面,也是分层递进,注重梯度,按课堂练习→课堂思考→课后思考与练习→实战任务,逐层深入,难度逐步提升,符合一般的学习规律,逐步加强学习效果。

  (7) 问答环节设计。在每章都安排了问与答环节,讲解了一些容易混淆的问题或者扩展一些课堂内的知识,为学有余力的读者开了一扇扇去学习更多知识的窗口。

  最后提及一下教材的使用。对于课时较少的院校,可以上学期安排第1~7章的授课内容,而下学期安排第8~15章的内容。对于多课时的院校,则可以根据自身情况选择需要的章节学习。

  本书可以用作下述课程的教材:

  C#面向对象程序设计。

  .NET Framework程序设计。

  WinForm应用开发。

  .NET下的数据库应用开发。

  另外也可以作为如下课程的入门教材:

  ADO.NET入门。

  SQL入门。

  多线程入门。

  GDI+入门。

  限于时间精力和水平,书中难免存在诸多值得推敲的地方,甚至会有内容的疏漏和错误。各位专家、老师和读者在使用过程中,如果发现任何问题,欢迎不吝赐教。

  感谢诸多领导、老师的指导与鼓励支持,也感谢在教材使用过程中为本书提出建议的所有学生和老师。

  编者

  2016年7月