图书目录

目    录

第一篇  门

第1章  进入Microsoft .NET世界 2

1.1  Microsoft .NET的理念 2

1.1.1  Visual Studio .NET的历史和延承 3

1.1.2  初识 .NET Framework 4

1.2  .NET Framework的架构 5

1.2.1  什么是公共语言运行时(CLR) 5

1.2.2  微软中间语言——MSIL 6

1.2.3  .NET框架中的编程语言 7

1.2.4  多语言支持和语言互操作的基础——CTS和CLS 7

1.2.5  了解.NET类库 8

1.3  开发环境的安装 9

1.3.1  Visual Studio的安装 10

1.3.2  安装.NET Framework 3.0环境 11

1.3.3  关于Visual Studio 2007及Visual Studio 2008 14

1.4  开始我们的应用程序 15

1.4.1  你的第一个C#程序 15

1.4.2  Visual Studio 2005介绍 17

1.4.3  帮助文档的使用 23

1.5  小结 25

第2章  C#语言基础 26

2.1  学习数据类型 26

2.1.1  变量的概念 26

2.1.2  值类型 28

2.1.3  引用类型 32

2.2  运算符和表达式 33

2.2.1  算术运算符 33

2.2.2  关系运算符 35

2.2.3  逻辑运算符 36

2.2.4  赋值运算符 38

2.2.5  移位运算符 39

2.2.6  运算符的优先级 40

2.3  掌握语句 42

2.3.1  分支结构语句 43

2.3.2  循环语句 48

2.3.3  跳转语句 55

2.4  你必须了解的细节 58

2.4.1  数组 58

2.4.2  变量的作用域 61

2.4.3  类型转换 63

2.4.4  代码注释和#region指令 65

2.5  小结 66

第3章  C#中的面向对象 67

3.1  类的定义 68

3.1.1  什么叫字段 70

3.1.2  方法又是什么 71

3.2  类的使用——以鸭子为例 74

3.2.1  类成员的访问 76

3.2.2  类和对象的关系 77

3.3  类的数据成员的存放问题 78

3.3.1  类成员的存放 78

3.3.2  有点特别的静态数据成员 79

3.4  关于方法成员的更多研究 80

3.4.1  静态方法 80

3.4.2  方法重载及其意义所在 81

3.4.3  构造方法——初始化类中的数据成员 83

3.4.4  析构方法——销毁对象回收资源 84

3.5  属性和索引器的作用 86

3.5.1  属性 86

3.5.2  索引器 90

3.6  小结 94

第4章  面向对象的高级概念 95

4.1  继承 95

4.1.1  创建和使用继承 96

4.1.2  基对象引用子类实例——父母可以代表孩子做很多事情 100

4.1.3  base关键字 102

4.1.4  this关键字——用来调用本类成员 105

4.2  抽象类 106

4.2.1  何谓抽象和抽象类 107

4.2.2  实现抽象类 108

4.3  接口——多继承的换代产品 112

4.3.1  接口的定义和实现 112

4.3.2  显式接口实现——解决接口继承时的同名方法冲突 117

4.3.3  接口的使用 119

4.4  会飞的鸭子 120

4.4.1  定义鸭子类 120

4.4.2  使用继承 121

4.4.3  抽象类的作用 122

4.4.4  接口的好处 124

4.5  小结 126

第5章  高级类型 127

5.1  委托 127

5.1.1  委托的概念 127

5.1.2  委托的秘密 130

5.1.3  多播委托——引发连锁反应 130

5.2  事件 133

5.2.1  事件机制的原理 133

5.2.2  警察抓小偷 135

5.3  其他类型 137

5.3.1  枚举 137

5.3.2  结构——C语言的遗产 140

5.3.3  密封类——不能被继承的类 141

5.3.4  分部类——解决超长类代码的存放 142

5.3.5  匿名方法 143

5.3.6  可空类型 144

5.3.7  命名空间——区别同名类 145

5.3.8  数学类 146

5.3.9  日期类型 147

5.3.10  随机数类 148

5.3.11  字符串类 150

5.4  类型运算 155

5.4.1  类型转换 155

5.4.2  is运算符——检查某个对象是否与给定类型兼容 159

5.4.3  as运算符 160

5.4.4  溢出检查的启用和取消——checked和unchecked 160

5.4.5  out和ref 161

5.4.6  typeof运算符 161

5.5  小结 162

第6章  Windows窗体编程 163

6.1  第一个窗体程序 163

6.1.1  建立第一个窗体程序 164

6.1.2  窗体代码分析 166

6.1.3  窗体事件机制 168

6.2  基本窗体控件 169

6.2.1  按钮(Button)控件 170

6.2.2  多选框(CheckBox)控件 170

6.2.3  单选按钮(RadioButton)控件 171

6.2.4  标签(Label)控件 171

6.2.5  文本框(TextBox)控件 172

6.2.6  组合框(ComboBox)控件 174

6.2.7  一个小例子——IT技术调查 175

6.3  其他常用控件 176

6.3.1  滚动条(ScrollBar)和进度条(ProgressBar) 176

6.3.2  列表框(ListBox)控件 177

6.3.3  工具栏(ToolStrip)控件 178

6.3.4  状态栏(StatusStrip)控件 179

6.3.5  列表视图(ListView)控件 180

6.3.6  树视图(TreeView)控件 182

6.4  小结 185

第7章  窗体控件编程 186

7.1  高级控件 186

7.1.1  创建菜单 186

7.1.2  多文档应用程序 189

7.1.3  容器控件 191

7.1.4  对话框控件 192

7.2  GDI+的原理 193

7.2.1  画直线和曲线 195

7.2.2  绘制填充区域——使用刷子类 197

7.2.3  绘制图像——使用Image类 199

7.2.4  绘制文字——小例子:枚举系统支持的所有字体 200

7.3  窗体事件处理模型的基础——消息机制 202

7.3.1  Windows消息机制 203

7.3.2  重要的Control类 206

7.4  小结 209

第8章  处理异常 210

8.1  异常的产生——Bad Smell导致的问题 210

8.1.1  代码的错误有哪些 211

8.1.2  如何发现错误 213

8.2  使用调试器 214

8.2.1  断点管理窗口 215

8.2.2  自动窗口 216

8.2.3  监视窗口 217

8.2.4  即时窗口 217

8.2.5  使用调试器——一次程序调试实战 218

8.3  为程序买份保险 220

8.3.1  结构化异常处理 222

8.3.2  异常类和异常家族 223

8.3.3  多重catch语句 224

8.3.4  嵌套异常结构 226

8.4  自定义异常 228

8.4.1  使用自定义异常 228

8.4.2  如何正确使用异常 229

8.5  小结 230

第9章  操作文件和注册表 231

9.1  了解和操作注册表 231

9.1.1  了解注册表 232

9.1.2  操作注册表并编写一个简单的注册表编辑器 233

9.2  文件和文件夹操作 237

9.2.1  文件操作类及其使用 238

9.2.2  文件夹操作类及其使用 241

9.3  读写文件 243

9.3.1  流的概念——流就是“牛” 243

9.3.2  文件读写的方法 245

9.3.3  编码方式 245

9.3.4  文件流操作 247

9.3.4.1  一个Hello World级的文件流操作例子 249

9.3.4.2  创建一个简单的Windows记事本 250

9.3.5  读写文本数据及用流读写器重写文件流读写文件的例子 251

9.4  小结 254

第10章  案例——书籍收藏系统 255

10.1  项目背景 255

10.1.1  项目描述 255

10.1.2  软件的生命周期 255

10.1.2.1  了解软件生命周期的五个阶段 256

10.1.2.2  关于软件质量的几点做法 257

10.1.3  功能的组成 258

10.2  功能的实现 259

10.2.1  界面设计 259

10.2.2  代码实现 263

10.3  小结 271

第二篇  质

第11章  集合对象 273

11.1  数组 273

11.1.1  认识Array类 273

11.1.2  使用Array类 274

11.2  动态数组 276

11.2.1  认识ArrayList类 277

11.2.2  操作ArrayList 278

11.2.3  使用ArrayList缓存数据——一个简单的学员管理系统 280

11.3  哈希表 283

11.3.1  认识Hashtable类 284

11.3.2  Hashtable的操作 284

11.3.3  使用嵌套Hashtable——创建一个电话本系统 287

11.4  集合空间的接口 290

11.4.1  Icollection接口 291

11.4.2  Ienumerable接口及其使用 291

11.4.3  Ilist接口 293

11.4.4  自定义集合类 294

11.5  专用集合类 297

11.5.1  栈Stack 298

11.5.2  队列Queue 299

11.5.3  SortedList集合 300

11.5.4  更方便的操作字符串集合——StringCollection和StringDictionary集合 302

11.6  小结 303

第12章  泛型 304

12.1  为什么使用泛型 304

12.1.1  泛型思想的引出 304

12.1.2  C#泛型简介 306

12.2  泛型定义及其应用 307

12.2.1  泛型结构体 308

12.2.2  泛型类 309

12.2.3  泛型接口 311

12.2.4  泛型委托 312

12.2.5  泛型约束 314

12.3  泛型集合 315

12.3.1  泛型List集合 316

12.3.2  泛型哈希表——Dictionary 317

12.3.3  泛型队列 319

12.3.4  泛型栈 320

12.4  泛型的应用 321

12.4.1  使用泛型要注意的问题 321

12.4.2  一个泛型使用的示例 323

12.5  小结 326

第13章  多线程 327

13.1  进程与线程的概念 327

13.2  使用线程 329

13.2.1  认识Thread类并创建你的第一个带线程的程序 329

13.2.2  线程的方法和状态 332

13.2.3  线程的优先级及实用实例 334

13.3  线程的同步 336

13.3.1  锁定机制——使用Lock关键字 338

13.3.2  最常用的同步基元——监视器 340

13.3.3  事件 343

13.3.3.1  一个体现通知机制的例子 343

13.3.3.2  用三条线程去分别得到房子、车子和妻子 345

13.3.4  理解线程池——外加一个Word模拟程序 346

13.4  多线程应用 348

13.4.1  何时使用线程 349

13.4.2  集合中的线程安全 349

13.4.3  使用线程操作Windows窗体 352

13.4.3.1  采用计时器来设计一个闹钟程序 352

13.4.3.2  使用线程来实现闹钟功能 353

13.4.4  一个线程的例子——福利彩票双色球 356

13.5  小结 359

第14章  ADO.NET编程 361

14.1  数据库基础 361

14.1.1  SQL Server 2005的安装与使用 361

14.1.2  SQL简介 364

14.1.3  创建数据库 366

14.1.4  创建表 368

14.1.5  如何对数据进行增、删、改 370

14.1.6  如何查询数据 371

14.1.7  更快的执行速度——存储过程 374

14.1.8  数据库管理的基本操作 375

14.2  ADO.NET简介 376

14.2.1  ADO.NET的组成部件 377

14.2.2  ADO.NET的新特性 378

14.3  连接式访问数据库 379

14.3.1  如何连接数据库 380

14.3.2  如何操作数据库增、删、改、查 382

14.3.3  读取数据库结果集 386

14.3.4  事务操作的原理及其使用 387

14.4  调用存储过程 389

14.4.1  参数对象 390

14.4.2  调用无返回值的存储过程 392

14.4.3  调用带返回值的存储过程 394

14.5  数据集 396

14.5.1  认识数据集 397

14.5.2  建立数据表 397

14.5.3  数据集综合操作 401

14.6  断开式操作数据库 404

14.6.1  认识数据适配器 405

14.6.2  填充数据集 406

14.6.3  把数据集中的数据同步到数据库 408

14.7  小结 415

第15章  数据绑定 416

15.1  更强大的数据呈现——使用DataGridView控件 416

15.1.1  DataGridView的属性和方法 417

15.1.2  将DataGridView绑定到数据集 417

15.1.3  将DataGridView绑定到数据视图 420

15.1.4  将DataGridView绑定到数组 422

15.1.5  将DataGridView绑定到集合 423

15.1.6  定制DataGridView控件 423

15.2  数据集与数据绑定 427

15.2.1  提高代码的可读性——类型化数据集 427

15.2.2  BindingSource组件的优势 430

15.2.3  绑定DataGridView控件 431

15.3  绑定的应用 435

15.3.1  绑定到文本框 435

15.3.2  绑定到组合框 437

15.3.3  示例——一个简单的人事管理系统 438

15.4  小结 443

第16章  打印和报表 444

16.1  为你的程序添加打印功能 444

16.1.1  打印的原理与实现 444

16.1.2  认识打印控件——创建一个带打印功能的程序 447

16.1.3  打印DataGridView数据 449

16.2  水晶报表 450

16.2.1  快速建立水晶报表——创建一个家庭财务开支系统 451

16.2.2  报表查看器控件 457

16.2.3  报表文档 458

16.2.4  专业的报表设计器——水晶报表专家 460

16.2.5  加载和使用水晶报表 461

16.2.6  筛选报表数据 463

16.3  小结 465

第17章  组件技术 466

17.1  搭积木游戏 466

17.1.1  应用程序交互的发展史 466

17.1.2  组件的概念 468

17.2  认识程序集 468

17.2.1  弱名称和强名称程序集的区别 469

17.2.2  如何建立和使用程序集 470

17.3  反射技术 476

17.3.1  反射的概念 476

17.3.2  使用反射访问程序集 476

17.4  天下皆积木——平台调用 480

17.4.1  特性的概念 480

17.4.2  如何调用Windows API 481

17.4.3  如何调用COM组件 482

17.5  小结 485

第18章  软件开发方式 486

18.1  面向对象的分析与设计 486

18.1.1  OOAD的必要性 487

18.1.2  软件的组成“材料” 487

18.1.3  面向对象分析 489

18.1.4  面向对象设计 490

18.1.5  掌握VS .NET的类图设计器的使用 491

18.2  软件的体系结构 495

18.2.1  软件体系中的内容 495

18.2.2  组件 496

18.2.3  模式 496

18.2.3.1  设计模式——一个应用单例模式的例子 497

18.2.3.2  一个工厂模式的例子 498

18.2.4  软件的设计原则 500

18.3   .NET的三层架构 500

18.3.1  三层架构的构成 501

18.3.2  为什么要使用三层架构 503

18.3.3  一个应用三层架构的示例——家庭理财系统 503

18.3.3.1  建立数据库 503

18.3.3.2  小试三层架构 505

18.3.3.3  实现界面层 512

18.3.3.4  实现业务层 514

18.3.3.5  实现数据层 515

18.3.3.6  完成项目 518

18.4  小结 519

第19章  Windows工作流基础(WWF) 520

19.1  工作流的基础 520

19.1.1  你的第一个工作流程序 520

19.1.2  理解宿主的概念 525

19.1.3  理解活动(Activity)的概念 525

19.2  顺序工作流 527

19.2.1  顺序工作流控件 527

19.2.2  建立顺序工作流 529

19.3  状态工作流 532

19.3.1  状态工作流控件 532

19.3.2  建立状态机工作流——实现一个红绿灯系统 534

19.4  工作流的应用 538

19.4.1  向工作流传入数据 538

19.4.2  让工作流调用外部方法 540

19.4.3  使用事件控制工作流 543

19.5  实现更现实的工作流——订单处理流程 547

19.5.1  订单处理业务 547

19.5.2  建立订单状态工作流 548

19.5.3  应用工作流组件 552

19.5.4  工作流应用领域 558

19.6  小结 558

第20章  案例——黑木崖家庭财务系统 559

20.1  需求分析 559

20.1.1  项目名称及背景 559

20.1.2  需求规定 559

20.1.3  运行环境规定 561

20.2  系统设计 561

20.2.1  应用三层架构 561

20.2.2  数据库设计 562

20.2.3  界面设计 567

20.3  功能实现 569

20.3.1  账户管理模块 570

20.3.2  账薄管理模块 577

20.3.3  财务中心模块 588

20.3.4  系统中心模块 590

20.4  小结 592

第三篇  道

第21章  网络编程 594

21.1  网络编程基础 594

21.1.1  网络通信基础 594

21.1.2  System.Net命名空间概述 596

21.2  网络通讯编程 596

21.2.1  TCPClient和TCPListener类的使用——编写一个点对点聊天工具 597

21.2.2  使用UDPClient——无连接的发送数据方式 599

21.2.3  实现一个P2P聊天室 601

21.3  访问Internet 609

21.3.1  用WebClient访问Internet——实现下载和上传文件的例子 609

21.3.2  WebRequest 类和WebResponse类及其使用 611

21.3.3  使用浏览器控件——制作一个简单的浏览器 612

21.4  小结 615

第22章  XML 616

22.1  XML简介 616

22.1.1  XML的由来 616

22.1.2  XML的组成 617

22.1.3  什么时候使用XML 618

22.2  XML的语法 619

22.2.1  构成元素——剖析一个基本的XML文档 619

22.2.2  XML语法要点 620

22.2.3  CDATA语法 621

22.2.4  命名空间 622

22.2.5  什么是实体 624

22.2.6  架构(Schamer)——XML文档的验证 625

22.2.7  Schema语法 628

22.3  XML的读写操作 630

22.3.1  XML的流式读写——一个流式读写XML的例子 630

22.3.2  XML的随机读写——几个随机读写XML的例子 635

22.3.3  编程验证XML文档的有效性 641

22.3.4  数据集与XML 642

22.4  小结 644

第23章  ASP.NET基础 645

23.1  HTML简介 645

23.1.1  标签 646

23.1.2  表单 652

23.1.3  脚本 655

23.2  进入ASP.NET的世界 657

23.2.1  ASP.NET概述 657

23.2.2  配置ASP.NET的运行环境 658

23.2.3  你的第一个ASP.NET程序 659

23.3  简单控件 663

23.3.1  Label控件 664

23.3.2  TextBox控件 664

23.3.3  CheckBox控件 664

23.3.4  RadioButton控件 664

23.3.5  Button 665

23.3.6  Image控件 665

23.3.7  DropDownList控件 667

23.3.8  Calendar控件 669

23.3.9  AdRotator控件 669

23.4  小结 670

第24章  ASP.NET进阶 671

24.1  Web对象模型 671

24.1.1  Page对象及其使用 671

24.1.2  HttpResponse、Cookie、HttpRequest对象及其使用 674

24.1.3  Application、Session对象及其使用 678

24.1.4  Server对象和PostBackUrl属性及其使用 680

24.2  数据绑定 684

24.2.1  绑定控件属性 684

24.2.2  GridView控件及其使用 685

24.2.3  DataList控件及其使用 686

24.2.4  FormView控件及其使用 688

24.3  高级Web控件 690

24.3.1  登录控件 690

24.3.2  验证控件 691

24.3.3  导航控件 692

24.3.4  WebParts控件——创建一个简单的Web部件应用 693

24.3.5  Master Pages模板页 696

24.4  小结 699

第25章  Web服务 700

25.1  大道的到来——Web服务 700

25.1.1  创建你的第一个Web服务——一个简单的令人吃惊的计算服务 701

25.1.2  相关术语 704

25.2  创建Web服务 706

25.2.1  创建Web服务 706

25.2.2  发布Web服务 708

25.3  使用Web服务 712

25.3.1  在Windows项目中使用Web服务 713

25.3.2  在Web应用中使用Web服务 716

25.3.3  Web服务示例——创建一个股票查询系统 716

25.4  小结 721

第26章  Windows描述基础(WPF) 722

26.1  新时代的开发框架WPF 722

26.1.1  WPF简介 722

26.1.2  你的第一个WPF程序 723

26.1.3  XAML概述及剖析 726

26.2  WPF基本控件 728

26.2.1  按钮控件 729

26.2.2  文本及图片控件 731

26.2.3  视图控件 732

26.2.4  容器控件 736

26.2.5  数据绑定控件 739

26.2.5.1  绑定控件属性 739

26.2.5.2  绑定XML数据源 739

26.2.5.3  绑定对象 740

26.2.5.4  绑定数据集 742

26.3  图像与多媒体 745

26.3.1  创建2D图形 745

26.3.2  创建一个简单的3D图形 747

26.3.3  创建动画——一个渐变的长方形 748

26.3.4  音视频播放——创建一个媒体播放器 749

26.4  小结 751

第27章  WCF和AJAX 752

27.1  什么是WCF 752

27.1.1  WCF技术基础 752

27.1.2  创建一个简单的WCF服务 754

27.1.3  承载和使用WCF服务 757

27.2  AJAX技术 761

27.2.1  AJAX简介 761

27.2.2  JavaScript的语法 762

27.2.3  创建并解析一个AJAX应用 767

27.2.4  使用ASP.NET AJAX组件创建AJAX应用 768

27.3  小结 772

第28章  项目的安装与部署 773

28.1  项目部署 773

28.1.1  安装部署的类型 773

28.1.2  部署桌面应用程序——创建一个桌面程序安装包 774

28.1.3  部署Web应用程序 779

28.2  保护你的知识产权——给你的程序加密 780

28.2.1  混淆器简介 781

28.2.2  使用混淆器来加密程序 783

28.3  Windows服务 787

28.3.1  创建一个Windows服务 788

28.3.2  使用应用程序配置文件 791

28.3.3  使用Windows服务来部署程序 793

28.4  小结 794

第29章  单元测试和重构 795

29.1  单元测试 795

29.1.1  单元测试的概念 795

29.1.2  使用NUnit进行单元测试 796

29.2  重构(Refactoring) 801

29.2.1  为什么要重构 802

29.2.2  何时进行重构 803

29.2.3  重构的方法 803

29.3  使用Visual C#重构菜单 808

29.3.1  提取方法 809

29.3.2  重命名 810

29.3.3  封装字段 811

29.3.4  提取接口 812

29.3.5  将局部变量提升为参数 813

29.3.6  移出参数 814

29.3.7  重新排列参数 815

29.4  小结 816

第30章  案例——天天购物商城 817

30.1  需求分析 817

30.1.1  项目名称及背景 817

30.1.2  需求规定 817

30.1.3  运行环境规定 818

30.2  系统分析 818

30.2.1  应用三层架构 819

30.2.2  数据库设计 820

30.2.3  界面设计 823

30.3  功能实现 824

30.3.1  主页面实现 825

30.3.2  购物车实现 829

30.3.3  详细信息页面 830

30.3.4  结算中心模块 834

30.4  小结 837

附录A  C#语言规范 838

命名规范 839

注释规范 844

行文规范 845

附表 851

附录B  快捷键参考 854