《C#程序设计》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:王贤明,谷琼,胡智文编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:9787302454076
  • 页数:431 页
图书介绍:C#作为.NET Framework下的首选语言,是一种简洁优雅、多用途、面向对象的现代化语言。目前开设.NET相关课程的高校非常多,相关教材也越来越多。但是在教学中,也发现了诸多教材存在着不少缺陷或不足之处,因而萌发了编写本教材的意图。

第1章 概述 1

1.1 .NET 1

1.2 C 2

1.3 VS开发环境 2

1.4 编程初试 3

1.4.1 控制台程序 3

1.4.2 WinForm程序 5

1.5 问与答 6

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

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

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

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

1.6 思考与练习 15

1.7 实战任务 15

第2章 数据类型与运算符 16

2.1 常量与变量 16

2.1.1 常量 16

2.1.2 变量 17

2.1.3 变量的命名 17

2.1.4 变量的命名法 18

2.2 简单数据类型 18

2.2.1 bool类型 18

2.2.2 整型类型 19

2.2.3 char类型 20

2.2.4 小数类型 21

2.3 枚举类型 23

2.4 结构类型 24

2.5 隐式类型变量 25

2.6 运算符 26

2.6.1 算术运算符 26

2.6.2 赋值运算符 27

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

2.6.4 位运算符 30

2.6.5 条件运算符 32

2.6.6 自增与自减 32

2.6.7 运算符的优先级 33

2.7 转换 34

2.7.1 隐式转换 34

2.7.2 显式转换 34

2.7.3 Type.Parse 35

2.7.4 Convert类 36

2.7.5 装箱与拆箱 36

2.7.6 as&is 36

2.8 问与答 36

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

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

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

2.8.4 0/0.0=? 37

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

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

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

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

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

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

2.9 思考与练习 40

2.10实战任务 41

第3章 程序控制 42

3.1 选择语句 42

3.1.1 if语句 42

3.1.2 switch语句 43

3.2 循环语句 45

3.2.1 for语句 45

3.2.2 while语句 47

3.2.3 do…while语句 48

3.3 跳转语句 48

3.3.1 break语句 49

3.3.2 continue语句 49

3.3.3 goto语句 50

3.3.4 return语句 50

3.3.5 throw语句 50

3.4 问与答 50

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

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

3.4.3 如何避免太深的嵌套 52

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

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

3.4.6 如何产生随机数 54

3.4.7 什么叫程序集 54

3.5 思考与练习 54

3.6 实战任务 55

第4章 面向对象基础 56

4.1 类与对象 56

4.2 字段 57

4.3 属性 58

4.3.1 常规属性 58

4.3.2 自动属性 60

4.4 索引器 61

4.5 方法 61

4.5.1 方法的定义与使用 61

4.5.2 变量作用域 63

4.5.3 方法重载 64

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

4.5.5 ref与out 65

4.5.6 this 69

4.6 Main()函数 70

4.7 构造函数 72

4.8 static 73

4.9 析构函数 76

4.10委托 77

4.10.1 委托使用三步曲 77

4.10.2 多播委托 79

4.11匿名方法 80

4.12 Lambda表达式 82

4.13事件 84

4.13.1 事件使用三步曲 84

4.13.2 三类事件 86

4.14继承 89

4.14.1 继承的实现 89

4.14.2 抽象类及抽象方法 92

4.14.3 类的密封 93

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

4.14.5 protected修饰符 95

4.15多态 96

4.16接口 99

4.17匿名类型 101

4.18结构 101

4.18.1 DateTime 103

4.18.2 TimeSpan 104

4.19 object类 104

4.19.1 相等问题 105

4.19.2 GetType() 108

4.19.3 ToString() 109

4.20问与答 111

4.20.1 什么是命名空间 111

4.20.2 readonly与const究竟有何区别 112

4.20.3 什么是分部类 113

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

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

4.20.6 重写与重载 116

4.20.7 抽象方法和虚方法 117

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

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

4.20.10 base与this 121

4.20.11什么是运算符重载 122

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

4.21思考与练习 126

4.22实战任务 127

第5章 数组 129

5.1 声明及初始化 129

5.2 访问与遍历 131

5.3 Array 134

5.4 聪明的数组——索引器 136

5.5 问与答 140

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

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

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

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

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

5.6 思考与练习 144

5.7 实战任务 144

第6章 字符串 145

6.1 字符串及其转义符 145

6.1.1 字符串及其构造 145

6.1.2 字符转义 146

6.2 常用方法 147

6.2.1 string类的方法 147

6.2.2 字符串对象的方法 150

6.3 StringBuilder 160

6.4 编码 164

6.5 问与答 166

6.5.1 s=null,s= string.Empty与s=″″ 166

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

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

6.5.4 各种编码之间如何转换 168

6.6 思考与练习 169

6.7 实战任务 169

第7章 W inForm初步 171

7.1 窗体 171

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

7.2.1 控件常用操作 177

7.2.2 键盘事件处理 181

7.2.3 鼠标事件处理 182

7.3 基本控件 184

7.3.1 Label控件 184

7.3.2 Button控件 184

7.3.3 RadioButton控件 187

7.3.4 CheckBox控件 188

7.3.5 TextBox控件 189

7.3.6 ListBox控件 192

7.3.7 ComboBox控件 196

7.3.8 PictureBox控件 198

7.3.9 NumericUpDown控件 199

7.3.10 ProgressBar控件 200

7.3.11HScrollBar控件和VScrollBar控件 201

7.3.12 TrackBar控件 202

7.3.13 ToolTip控件 203

7.3.14 GroupBox控件 204

7.3.15 Panel控件 205

7.3.16 MonthCalendar控件 205

7.4 常用组件 206

7.4.1 Timer组件 206

7.4.2 ImageList组件 208

7.5 菜单 209

7.5.1 MenuStrip 210

7.5.2 ContextMenuStrip 211

7.5.3 ToolStrip 211

7.5.4 StatusStrip 212

7.6 对话框 213

7.6.1 OpenFileDialog 213

7.6.2 SaveFileDialog 214

7.6.3 FontDialog 214

7.6.4 ColorDialog 215

7.6.5 FolderBrowserDialog 216

7.7 高级控件 217

7.7.1 RichTextBox控件 217

7.7.2 CheckedListBox控件 219

7.7.3 TabControl控件 220

7.7.4 ListView控件 222

7.7.5 TreeView控件 225

7.7.6 WebBrowser控件 228

7.8 COM组件 229

7.8.1 Shockwave Flash Object组件 229

7.8.2 Windows Media Player组件 231

7.9 MDI 231

7.10问与答 235

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

7.10.2 Click和MouseClick有何关系 236

7.10.3 多种鼠标事件有何关系 236

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

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

7.10.6 如何实现拖放 239

7.10.7 关于剪贴板 240

7.10.8 如何动态构建控件树 241

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

7.11思考与练习 242

7.12实战任务 243

第8章 文件 244

8.1 文件系统 244

8.1.1 驱动器访问 244

8.1.2 目录访问 245

8.1.3 文件访问 247

8.1.4 路径 249

8.2 文件处理流 250

8.2.1 FileStream 250

8.2.2 StreamReader与StreamW riter 254

8.2.3 BinaryReader与BinaryWriter 255

8.3 问与答 258

8.3.1 如何创建临时文件 258

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

8.4 思考与练习 259

8.5 实战任务 259

第9章 集合 261

9.1 普通集合 261

9.1.1 ArrayList 262

9.1.2 Queue 265

9.1.3 Stack 267

9.1.4 Hashtable 269

9.1.5 SortedList 272

9.1.6 BitArray 273

9.2 泛型 274

9.3 泛型集合 283

9.3.1 List〈T〉 283

9.3.2 Queue〈T〉和Stack〈T〉 285

9.3.3 Dictionary〈K,V〉和KeyValuePair〈K,V〉 286

9.3.4 SortedList〈K,V〉 287

9.3.5 HashSet〈T〉 288

9.4 问与答 292

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

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

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

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

9.4.5 什么是可空类型 296

9.4.6 什么是Tuple 299

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

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

9.4.9 泛型的比较问题 300

9.4.10 HashSet 〈 T〉的扩展方法 300

9.4.11集合的运算 300

9.5 思考与练习 301

9.6 实战任务 301

第10章 GDI+ 302

10.1 概述 302

10.2 辅助绘图对象 303

10.2.1 Point结构 303

10.2.2 Size结构 304

10.2.3 Rectangle结构 304

10.2.4 Color结构 305

10.2.5 Font类 306

10.2.6 Graphics类 306

10.3 基本绘图工具 309

10.3.1 Pen 309

10.3.2 Brush 311

10.4 图像处理 314

10.4.1 绘制直线 314

10.4.2 绘制矩形 315

10.4.3 绘制多边形 315

10.4.4 绘制曲线 316

10.4.5 绘制椭圆 317

10.4.6 绘制图像 318

10.5 常见应用 319

10.5.1 格式转换 319

10.5.2 水印 320

10.5.3 灰化 320

10.5.4 底片 321

10.5.5 浮雕 323

10.5.6 文本打印 324

10.6 问与答 326

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

10.6.2 Math类 326

10.7 思考与练习 326

10.8 实战任务 328

第11章 多线程 329

11.1 进程 329

11.2 多线程基础操作 332

11.2.1 创建线程 333

11.2.2 启动线程 335

11.2.3 终止线程 337

11.2.4 暂停线程 338

11.2.5 合并线程 338

11.3 线程同步 338

11.3.1 lock 340

11.3.2 Monitor 341

11.3.3 Mutex 342

11.3.4 ContextBoundObject 342

11.3.5 Manual ResetEvent 343

11.3.6 AutoResetEvent 345

11.4 线程池 346

11.5 跨线程的控件访问 348

11.6 问与答 349

11.6.1 如何使用匿名方法来创建线程 349

11.6.2 如何使用Lambda表达式来创建线程 349

11.6.3 如何向线程方法传递多个参数 349

11.6.4 如何通过手动同步事件给多个线程加锁 350

11.7 思考与练习 351

11.8 实战任务 353

第12章 序列化 354

12.1 二进制序列化 354

12.2 SOAP序列化 360

12.3 XML序列化 362

12.4 问与答 363

12.4.1 采用二进制序列化时,从序列化后的文件能看到什么 363

12.4.2 如何序列化到内存流 364

12.4.3 反序列化时想使用被禁止序列化的字段该如何办 364

12.4.4 属性在序列化时遵从什么样的规律呢 366

12.5 思考与练习 366

12.6 实战任务 366

第13章 压缩与解压 367

13.1 DeflateStream 367

13.2 GZipStream 371

13.3 问与答 373

13.3.1 using的作用 373

13.3.2 如何实现多文件的压缩解压 374

13.4 思考与练习 378

13.5 实战任务 378

第14章 SQL 379

14.1 数据库基本概念 379

14.2 SQL学习环境及基本操作 380

14.2.1 Microsoft SQL Server Management Studio 380

14.2.2 数据库与表的基本SQL操作 381

14.3 Insert 384

14.4 Select 385

14.4.1 查询数据 385

14.4.2 查询指定字段 386

14.4.3 排序 386

14.4.4 过滤 387

14.4.5 查询前n条记录 388

14.4.6 模糊查询 388

14.4.7 统计 389

14.4.8 分组 390

14.4.9 空值查询 391

14.5 Update 391

14.6 Delete 392

14.7 问与答 393

14.7.1 如果表名或者字段名中有空格该如何办 393

14.7.2 如何只返回不重复的记录 393

14.7.3 如何指定结果的列名 393

14.7.4 如何对查询到的结果进行一定的组合或者运算后呈现 394

14.7.5 如何使用between关键字 394

14.7.6 如何使用in关键字 394

14.7.7 如何使用[]、[?]通配符 395

14.7.8 compute子句如何使用 396

14.7.9 什么是联合查询 396

14.7.10什么是嵌套查询 396

14.8 思考与练习 396

14.9 实战任务 396

第15章 ADO.NET 397

15.1 Connection 398

15.2 Command 399

15.3 DataReader 401

15.4 DataAdapter 403

15.5 DataSet 404

15.6 参数化查询 406

15.7 数据绑定 408

15.7.1 相关控件与组件 408

15.7.2 简单控件绑定 410

15.7.3 复杂控件绑定 411

15.7.4 数据绑定示例 412

15.8 问与答 413

15.8.1 记不住连接字符串的写法如何办 413

15.8.2 Access数据库的连接字符串是怎样的 415

15.8.3 连接Excel工作簿的连接字符串如何写 416

15.8.4 如何使用App.config文件 416

15.9 思考与练习 418

15.10实战任务 418

附录A 异常处理与调试 419

A.1 异常处理 419

A.1.1 异常处理的几种形式 420

A.1.2 异常的引发 425

A.1.3 自定义异常 427

A.2 调试 428

参考文献 431