标题：叩响C#之门
图书信息
作　者：梁斌玉 编著 
出 版 社： 电子工业出版社
出版时间： 2009-7-1
页　数：496页
开　本： 16开
I S B N ：9787121090899
定价：59.00元（含光盘1张）
前    言
这是一部花费五年时间写成的著作，千锤百炼写就、心血凝结而成。
这是一部面向初学者的著作，因为写此书之前我也是一个初学者。正因为如此我懂得初学者在想什么，懂得初学者需要什么与初学者思维相近，心灵相通，故能针对初学者的困惑之处着笔。看完这本书你并不能马上成为绝顶高手，但能帮你快速地掌握编程的基本概念和基本思想，为深入学习打下扎实的基础。我希望你看完这本书后，再也不用为不知如何踏入编程的殿堂而彷徨，再也不用为书籍中繁多的名词术语而迷茫，能够轻松地阅读别人的代码，踏上高手之路。
之所以说是心血凝结而成，是因为这部著作不但耗费了巨大的时间和精力，而且融入了我多年的学习体会和教学思想。
本书的特点
1．知初学者之需我是一名高中数学教师，在教学过程中我发现，让学生替我讲题往往会收到很好的效果。究其原因，并非学生讲得多么精彩，而是学生间的思维层次相同，该学生重点讲解之处就是其他学生困惑之处。因此，我在编写本书时，尽力回想自己学习时的体验，以己推人，了解初学者的困惑。幸好，我在学习C#之初做了大量的笔记，写下了不少困惑和感受，这对我编写本书大有裨益。
2．逐步构建知识学习知识有两种基本方法，一种方法是先对整体概述，然后逐步细化。如果学习者对所学领域有一定认识，生活中有一定的体验，就适合这种方法。另一种方法是由最简单的知识出发，逐步添加内容，最后构建成一个整体。如果学习者对所学领域非常陌生，就适合这种方法。编程，现实生活中没有体验，对初学者来说是非常陌生和抽象的事物，所以本书并没有像其他教材那样开篇即对.NET框架展开大篇幅论述（成堆的陌生概念会让人望而生畏，我刚接触C#时就是这种感觉），而是简单介绍后就采用逐步构建的方法来学习。对于每个知识点，先指导学习者编写一些简单小程序，获得感性体验，然后透过现象看本质，讲解其背后蕴涵的道理。随着内容的不断添加，最终构建成完整的知识体系。
3．例子典型简单  要想知道苹果的味道，只需要尝一口即可，要想学好编程，就要不断练习。所以本书通过大量贴切的例子来讲解概念。这些例子精心构思，巧妙设计，为了一个例子，我常常琢磨数月，以确保它典型、简单，一目了然。
4．结构编排合理  C#语言体系庞大，知识繁杂，概念互相交叉。为此，我在结构编排上花费了很多心思，理清了概念间的顺序，让这些概念按逻辑顺序逐一展现。并且编排中也考虑了读者的兴趣，内容难易交错，跌宕起伏，读者一路学习下来，会很有成就感。
5．语言简洁通顺啰里啰唆的行文会妨碍读者理解，因此每段话都我都追求逻辑连贯，含义准确，千锤百炼，字字珠玑，绝无半句废话妨碍读者思维。为了达到这个目的，一些重要段落常常修改数周方才定稿，一些难讲的概念常常花费数月进行构思。我认为花这么多时间是值得的，因为我一个人多花点时间，就可以使成千上万的读者节省很多时间。
为什么写一本书我要花费如此多的心血？这可能和我是追求完美主义的偏执性格有关，看到不完善的地方就不安心，就有一种非改不可的冲动。时至今日每读一遍本书，我都会修改很多词句，觉得还不够十全十美。今天偶然读到一句话：“追求完美是浪费生命，追求卓越才是追求成功。”掩卷回思，感悟颇深，感叹道：此书虽非完美无瑕，应该也可以称得上卓越了。于是决定先出版这本书，奉献给读者，这样总比放在我的电脑里强百倍，你说是不是？
“文王拘而演周易，仲尼厄而作春秋”，批阅五载，增删十次，借物明志。
本书的主要内容
本书分为三个部分，共23章。第Ⅰ部分为C#语法基础，包括第1章至第12章，深入浅出地介绍了C#的变量、运算符和表达式、流程控制、数组、函数、面向对象的编程，以及.NET框架的基本概念等C#编程的初步知识。第Ⅱ部分为Windows编程，包括第13章至15章，详细描述了Windows窗体编程的方方面面。第Ⅲ部分为.NET进阶，包括第16章至第23章，阐述了C#的诸多特性，如：委托与事件、绘图、文件和流、字符串和正则表达式、程序集和反射、多线程、集合，以及泛型。
本书光盘的内容
Project\第Ⅰ部分 C#语言
该文件夹中包含了3个Visual Studio 2005的解决方案。它们对应着本书第Ⅰ部分的相关案例。
Project\第Ⅱ部分 Windows编程
该文件夹中包含了本书第Ⅱ部分从第13章到第15章的案例。这些案例均为Visual Studio 2005的解决方案。
Project\第Ⅲ部分 .NET进阶
该文件夹中包含了本书第Ⅲ部分从第16章到23章的案例。这些案例均为Visual Studio 2005的解决方案。
Project\资源
该文件夹中包含了一些资源文件，如图片、图表等文件。
（注意：如果您用Visual Studio 2005之前版本的Visual Studio，打开上面这些解决方案的时候会出问题。）
联系方式
虽然我力求完美，但智识短浅，谬误之处难以避免，欢迎读者批评指正。
最后感谢李永伦先生对本书的审阅，以及为本书早日出版而付出辛勤劳动的所有人士表示衷心的感谢。
梁斌玉   
2008年12月
目    录
第Ⅰ部分  C#语法基础
第1章  初识编程    2
1.1  C#简介    2
1.2  Visual Studio开发环境    3
1.3  认识程序    4
1.3.1  创建项目    4
1.3.2  编写代码    5
1.3.3  运行程序    7
1.4  编译    7
1.5  二进制    8
1.5.1  二进制转换为十进制    9
1.5.2  十进制转换为二进制    10
1.6  数据和内存    13
第2章  变量    15
2.1  整型变量    16
2.1.1  声明整型变量    16
2.1.2  int型变量的取值范围    20
2.1.3  short型    21
2.1.4  long型    21
2.1.5  无符号型    21
2.1.6  整数类型小结    21
2.1.7  溢出    22
2.2  实数型变量    23
2.3  字符    24
2.3.1  字符和字符串    25
2.3.2  字符型变量和字符串变量    26
2.3.3  字符串的输出    27
2.3.4  字符串的读取    27
2.3.5  ASCII编码和Unicode编码    28
2.3.6  转义字符    32
2.3.7  @控制符    33
2.3.8  +运算符    33
2.4  变量的格式化输出    34
2.5  变量的命名规则    37
2.6  常量    38
2.7  关键字（Keyword）    39
2.8  深化练习：交换两个变量的值    40
第3章  运算符和表达式    43
3.1  算术运算符    44
3.2  自增、自减运算符    46
3.3  赋值运算符    48
3.4  优先级    49
3.5  类型转换    50
3.5.1  隐式转换    50
3.5.2  显式转换    52
3.5.3  字符串和数值间的转换    53
第4章  流程控制    55
4.1  算法的概念    56
4.2  顺序结构    57
4.3  逻辑表达式    59
4.3.1  关系运算符    59
4.3.2  逻辑运算符    61
4.3.3  布尔变量    63
4.4   选择结构    64
4.4.1  if语句    64
4.4.2  switch语句    70
4.4.3  条件表达式    73
4.4.4  深化练习：三个变量排序    74
4.5  循环结构    75
4.5.1  while语句    75
4.5.2  do-while语句    80
4.5.3  for语句    82
4.6  break语句和continue语句    84
4.7  循环语句深化练习：分形图    85
第5章  枚举、结构体和数组    88
5.1  枚举    88
5.2  结构体    92
5.3  数组    94
5.3.1  一维数组    94
5.3.2  foreach循环语句    97
5.3.3  二维数组    97
5.3.4  可变数组    99
第6章  函数    101
6.1  为什么需要函数    101
6.2  定义函数    102
6.3  返回值    105
6.4  参数    107
6.4.1  值传递    107
6.4.2  地址传递    108
6.4.3  引用型参数（ref）    109
6.4.4  输出型参数（out）    111
6.4.5  参数匹配    112
6.5  递归调用    113
6.6  变量的作用域    116
6.6.1  局部变量    116
6.6.2  程序块中的局部变量    117
第7章  面向对象编程：类和对象（一）    119
7.1  背景    119
7.2  面向对象的基本概念    120
7.3  定义类    122
7.4  声明对象    125
7.5  属性    127
7.6  构造函数    129
7.7  析构函数和垃圾回收    132
7.8  实例演练：Time类    133
第8章  面向对象编程：类和对象（二）    137
8.1  以对象为成员    137
8.2  静态成员    138
8.2.1  静态变量    138
8.2.2  静态函数    141
8.3  常量成员    142
8.3.1  const常量    142
8.3.2  readonly常量    144
8.4  重载（Overload）    146
8.4.1  函数重载    146
8.4.2  构造函数的重载    148
8.4.3  运算符重载    149
8.5  this关键字    153
8.6  索引    154
8.7  值类型和引用类型    157
8.7.1  值类型变量    158
8.7.2  引用型变量    159
8.7.3  引用型变量和垃圾回收器    160
8.8  引用符和对象的区别    160
8.9  声明对象数组    162
8.10  类视图    162
第9章  面向对象编程：继承    163
9.1  继承概述    163
9.2  由基类创建派生类    164
9.3  protected成员    167
9.4  虚函数的重写    170
9.5  普通函数的隐藏    172
9.6  base关键字    173
9.7  抽象类和抽象函数    174
9.8  密封类和密封函数    175
9.9  派生类的构造函数    176
9.10  万类之源：Object    180
第10章  面向对象编程：多态性    182
10.1  派生类的对象和基类的关系    182
10.2  多态性的概念    182
10.3  多态性的应用    183
10.4  is运算符    186
10.5  向下类型转换    187
10.6  接口    188
10.7  类关系图    192
第11章  .NET框架基本概念    193
11.1  如何理解.NET框架    193
11.2  C#和.NET的关系    194
11.3  中间语言    194
11.4  强数据类型    195
11.5  类型的判定    197
11.5.1  sizeof运算符    197
11.5.2  typeof运算符    197
11.5.3  GetType()函数    197
11.5.4  is运算符    198
11.6  命名空间    199
11.7  装箱和拆箱    202
11.8  对象的相等    204
第12章  异常    208
12.1  异常概述    208
12.2  捕获异常——try-catch结构    209
12.3  finally块——try-catch-finally结构    210
12.4  抛出异常——throw语句    211
12.5  .NET中的异常类    212
12.6  异常类的属性    214
12.7  自定义异常    215
第Ⅱ部分  Windows编程
第13章  Windows窗体编程（一）    218
13.1  窗体（Form）    218
13.2  按钮（Button）    223
13.3  标签（Label）    226
13.4  超链接标签（LinkLabel）    227
13.5  文本框（TextBox）    228
13.6  单选按钮（RadioButton）    230
13.7  复选框（CheckBox）    231
13.8  数字输入框（NumericUpDown）    233
13.9  群组框（GroupBox）    235
13.10  面板（Panel）    237
第14章  Windows窗体编程（二）    245
14.1  鼠标事件处理    245
14.2  键盘事件处理    249
14.3  图形框（PictureBox）    252
14.4  列表框（ListBox）    254
14.5  复选列表框（CheckListBox）    256
14.6  下拉式列表框（ComboBox）    259
14.7  列表视图（ListView）    261
14.8  树状视图（TreeView）    266
14.9  控件布局    270
第15章  Windows窗体编程（三）    277
15.1  菜单    277
15.1.1  主菜单（MainMenu）    277
15.1.2  关联菜单（ContextMenu）    284
15.2  工具栏（ToolStrip）    285
15.3  对话框    289
15.3.1  另存为对话框（SaveFileDialog）    289
15.3.2  打开文件对话框（OpenFileDialog）    291
15.3.3  字体对话框（FontDialog）    293
15.3.4  颜色对话框（ColorDialog）    294
15.3.5  自定义对话框    295
15.4  多文档界面    296
15.5  Windows窗体类的层次结构    302
第Ⅲ部分  .NET进阶
第16章  委托与事件    306
16.1  委托    306
16.2  多播委托    311
16.3  匿名函数    312
16.4  事件处理机制    313
16.4.1  事件处理机制的原理    313
16.4.2  自定义事件    316
第17章  绘图    321
17.1  概述    321
17.2  像素和坐标系    322
17.3  颜色    322
17.4  Graphics类    324
17.5  画笔（Pen）    325
17.6  画刷（Brush）    326
17.7  路径（Path）    329
17.8  OnPaint()方法    331
17.9  坐标变换    332
17.9.1  平移变换    332
17.9.2  旋转变换    334
17.9.3  伸缩变换    335
17.9.4  在滚动窗口中绘图    336
17.10  字体（Font）    341
17.11  显示图像    344
17.11.1  Image类    344
17.11.2  Bitmap类    345
17.11.3  Metafile类    346
第18章  文件和流    348
18.1  文件系统    348
18.1.1  File类和FileInfo类    348
18.1.2  关于文件的异常    350
18.1.3  Directory类和DirectoryInfo类    351
18.1.4  Path类    353
18.1.5  Environment类    354
18.2  基于流的文件操作    356
18.2.1  FileStream类    357
18.2.2  关于流的异常    359
18.2.3  用流读写文本文件    363
18.2.4  用流读写二进制文件    365
第19章  字符串和正则表达式    368
19.1  String类    368
19.1.1  复制字符串    369
19.1.2  比较字符串    371
19.1.3  验证字符串首尾    373
19.1.4  定位字符或子串    374
19.1.5  截取子串    377
19.1.6  拆分字符串    378
19.1.7  更改大小写    378
19.1.8  修改字符串    379
19.1.9  插入格式化变量    379
19.2  StringBuilder类    380
19.3  Char类    384
19.4  正则表达式    385
19.4.1  通配符    385
19.4.2  可选字符集    386
19.4.3  或    387
19.4.4  非    388
19.4.5  数量限定符    388
19.4.6  定位符    393
19.4.7  Regex类的函数    395
19.4.8  深化练习：验证用户输入    397
第20章  特性、程序集和反射    398
20.1  特性    398
20.1.1  使用特性    398
20.1.2  自定义特性    400
20.2  程序集    404
20.2.1  认识程序集    405
20.2.2  程序集的结构    412
20.2.3  私有程序集和共享程序集    413
20.2.4  程序集的特性    413
20.3  反射    416
20.3.1  获取类型信息（Type类）    416
20.3.2  获取程序集信息（Assembly类）    418
20.3.3  动态加载类型    419
第21章  多线程    422
21.1  线程的概念    422
21.2  Thread类    423
21.3  线程的优先级    427
21.4  线程的插入    431
21.5  线程的状态    433
21.6  线程的同步    434
21.6.1  线程同步的概念    434
21.6.2  互锁（Interlocked类）    436
21.6.3  管程（Monitor类）    438
21.6.4  互斥体（Mutex类）    443
21.6.5  死锁    446
21.7  线程池    449
第22章  集合    453
22.1  集合概述    453
22.2  Array类    454
22.3  ArrayList类    455
22.4  Stack类    459
22.5  Queue类    461
22.6  SortedList类    463
22.7  Hashtable类    465
第23章  泛型    473
23.1  泛型的概念    473
23.2  泛型集合类    476
23.2.1  List<T>类    477
23.2.2  Stack<T>类    477
23.2.3  Queue<T>类    478
23.3  类型约束    478