标题：C#必须知道的300个问题
作者：明日科技
图书详细信息：ISBN：9787302276562  [1]定价：49.8元
印次：1-1
装帧：平装
印刷日期：2011-12-30
图书简介：本书以C#基础知识为框架，介绍了各部分知识所对应的常用开发疑难问题，并进行透彻地解析。本书内容包括C#语言及其开发环境、掌握C#语言基础、流程控制语句、字符与字符串、数组和集合、C#面向对象程序设计、异常处理和程序调试、Windows窗体、Windows应用程序常用控件、Windows应用程序高级控件、C#面向对象高级技术、数据访问技术、水晶报表与打印、文件及数据流技术、GDI+绘图、多线程技术、网络编程技术、注册表技术、C#语言新技术和Windows应用程序打包部署。
本书所涉及的疑难问题都是一线开发人员在实际项目中遇到的，书中针对这些问题给出了解决方案，并进行了技术上的解析。读者通过对本书的学习，能够提高实际解决问题的能力。
本书提供了大量的源程序、素材，提供了相关的模块库、案例库、素材库、题库等多种形式的辅助学习资料，还提供迅速及时的微博、QQ、论坛等技术支持。
本书内容详尽，非常适合作为C#开发人员的学习用书和必备参考手册，也适合作为相关培训机构的师生和软件开发人员的参考资料。前言：学会站在巨人的肩膀上！
程序员在求职时，经常会被问到有关开发经验的问题。例如，“从事了多少年的开发？” “参与了哪些大型项目？”等。为何面试官对项目经验丰富的求职者青睐有加？究其根源在于程序开发是一门实践性非常强的学科。“纸上得来终觉浅，绝知此事要躬行”，编程经验是程序开发者在实践中积累的技术资源库，里面是各种习惯用法、知识理论、代码片段和应用技巧。而编程高手一般也是站在前人的肩膀上，分析别人的代码而有所领悟，或者借鉴他人的经验技巧形成自己的技能，在认识错误与解决问题中进步。这也是每个编程者的必经之路。
本书图文并茂、难易并举，汇集了300余个一线开发人员常见的C#编程疑难问题，每个问题都给出了详细的解答与点评。通过对本书的学习，您可以尽享前人的开发经验，迅速提升个人的开发能力。
本书内容
本书以C#基础知识结构为框架，给出了每部分知识中可能遇到的疑难问题或者是开发技巧。本书共分为20章，包括C#语言及其开发环境、掌握C#语言基础、流程控制语句、字符与字符串、数组和集合、C#面向对象程序设计、异常处理和程序调试、Windows窗体、Windows应用程序常用控件、Windows应用程序高级控件、C#面向对象高级技术、数据访问技术、水晶报表与打印、文件及数据流技术、GDI+绘图、多线程技术、网络编程技术、注册表技术、C#语言新技术和Windows应用程序打包部署。
为了更清晰地阐述问题和给出问题的解决方案，本书设置了以下栏目。
* 问题阐述：对问题进行详细阐述，对于复杂问题，给出问题产生的条件，并对问题中需要解决的部分做出说明。
* 专家解答：根据问题进行具体分析，给出问题的正确答案及解题思路，提供该问题涉及的技术知识。
* 专家点评：对问题及解答做出总结，为以后的问题解决提供思路，以及给出此问题应该注意的事项和对该问题的一些拓展。
本书特色
* 贴近应用。本书精选的疑难问题都是在实际项目开发中遇到的，可以解决读者在编程中可能碰到的疑难问题。
* 横向链接。本书知识框架与《C#开发入门及项目实战》一书相对应，可以在对《C#开发入门及项目实战》一书进行基础学习之后，再用本书来丰富自己并提高技能。
* 解析透彻。本书对每个问题的相关知识进行细致地讲解，并进行知识拓展，使读者不仅知其然，而且知其所以然。
* 授人以渔。本书在讲解技术的同时，还注重对读者能力的培养，使读者掌握分析与解决问题的能力。
本书配套资源
本书提供了内容丰富的配套资源，包括源程序、素材，以及模块库、案例库、题库、素材库等多项辅助内容，读者朋友可以通过如下方式获取。
第1种方式：
（1）登录清华大学出版社的网站，在网页右上角的搜索文本框中输入本书书名（注意区分大小写和留出空格），或者输入本书关键字，或者输入本书ISBN号（注意去掉ISBN号间隔线“-”），单击“搜索”按钮。
（2）找到本书后单击超链接，在该书的网页下侧单击“网络资源”超链接，即可下载。
第2种方式：
访问本书的新浪微博CSmrbook，找到配套资源的链接地址进行下载。
读者人群
本书非常适合以下人员阅读：
* 从事C#语言编程行业的开发人员
* 有一定语言基础，想进一步提高技能的人员
* 大中专院校的老师和学生
* 即将走上工作岗位的大学毕业生
* 相关培训机构的老师和学员
* C#编程爱好者目录：第1章  C#语言及其开发环境 1
问题1  C#与有什么关系？ 2
问题2  CTS、CLS和CLR分别
作何解释？ 2
问题3  Visual Studio 2010可以编写
哪些类型的应用程序？ 4
问题4  为何Visual Studio 2010安装
失败？ 5
问题5  怎样安装Visual Studio 2010
的帮助文档？ 6
问题6  designer.cs和.resx分别是什么？ 8
问题7  怎样设置断点，设置断点有
什么好处？ 8
问题8  我的代码为什么不显示行号？ 9
问题9  怎样使窗体中的控件布局统一？ 10
问题10  可以将控件的位置和大小
固定吗？ 11
问题11  我的Windows应用程序为
什么不显示控件？ 11
第2章  掌握C#语言基础 13
问题12  什么是命名空间？命名空间
和类库的关系是什么？ 14
问题13  Console.WriteLine与Console.
Write方法有什么区别？ 14
问题14  数据类型转换为何总是出错？ 15
问题15  值类型和引用类型有什么
区别？ 17
问题16  如何实现按值传递引用类型？ 19
问题17  如何实现按引用传递引用
类型？ 20
问题18  变量一定要赋初值吗？ 22
问题19  为string类型的变量赋空值
的方式有哪几种？ 22
问题20  常量中有换行符怎么办？ 23
问题21  三目运算符怎么出错了呢？ 24
问题22  i++和++i该怎么区分？ 25
问题23  “&”与“&&”符号有
什么区别？ 26
问题24  相等运算符重载出错怎么办？ 27
问题25  拆箱失败了怎么办？ 29
问题26  什么是深复制和浅复制，
可以举个例子吗？ 31
第3章  流程控制语句 34
问题27  为什么else后面的语句只
执行第一句？ 35
问题28  if语句不能and多条件吗？ 37
问题29  产生死循环的原因是什么？ 38
问题30  for和foreach有什么区别？ 40
问题31  while和do…while有什么
区别？ 41
问题32  break、continue、goto和
return有什么区别？ 43
问题33  如何使用goto语句查找
指定信息？ 46
问题34  如何使用for语句无限循环？ 47
问题35  使用for语句应该注意什么？ 48
问题36  如何跳出while循环？ 49
第4章  字符与字符串 51
问题37  C#程序代码中的(char)8和
‘8’有什么不同？ 52
问题38  怎样将字符串首字母转换
为大写或小写？ 52
问题39  “Path += @"\01.jpg";”这句
代码中，“+=” 是什么意思？
“@”用来做什么？ 53
问题40  怎样随机产生一个自定义
长度的字符串？ 54
问题41  如何判断输入的字符串是
否为数字？ 55
问题42  判断一个字符串由多少个
字母组成 56
问题43  如何计算字符串中某个
字符出现的次数？ 59
问题44  如何查找字符串中的指定
字符串？ 60
问题45  批量替换某一类字符串该
如何实现？ 62
问题46  怎样实现小数的四舍五入？ 63
问题47  如何在比较字符串时忽略
大小写？ 66
问题48  如何删除子字符串？ 67
问题49  如何删除指定字符以外的
所有字符？ 68
问题50  如何判断一个字符串是不
是回文字符串？ 69
问题51  如何将字符串转换为日期
格式？ 71
问题52  string和StringBuilder有
什么区别？ 73
问题53  如何去掉字符串中的所有
空格? 73
问题54  有几种比较字符串的方法？ 75
第5章  数组和集合 79
问题55  数组的类型可以转换吗？ 80
问题56  索引超出了数组界限是怎
么回事？ 81
问题57  在数组中如何查找一个数
的近似值？ 82
问题58  如何确定元素在数组中
的位置？ 84
问题59  如何按指定条件在数组中
检索元素？ 86
问题60  如何动态改变数组的长度？ 88
问题61  如何使用交错数组打印
杨辉三角形？ 89
问题62  冒泡排序算法的实现 91
问题63  选择排序算法的实现 93
问题64  插入排序算法的实现 94
问题65  希尔排序算法的实现 96
问题66  怎样反转数组中元素的顺序？ 97
问题67  如何把一个Array数组
复制到ArrayList中？ 99
问题68  如何实现数组间元素的复制？ 102
问题69  栈和队列有什么区别？ 104
问题70  RemoveAt方法删除元素时
出错 105
问题71  如何使用ArrayList类实现
N位数的任意组合？ 107
问题72  怎样把分割后的字符串
存储到ArrayList中？ 109
第6章  C#面向对象程序设计 111
问题73  为什么要面向对象？ 112
问题74  初始化静态成员出错怎么办？ 113
问题75  静态成员与实例成员有
什么不同？ 115
问题76  如何区别各种作用域修饰符？ 116
问题77  字段和属性有什么不同？ 118
问题78  构造函数和析构函数有
什么不同？ 119
问题79  事件和委托有什么关系？ 120
问题80  类和结构有什么不同？ 121
问题81  怎样传递值类型的参数？ 122
问题82  如何对值类型的参数进行
引用传递？ 123
问题83  可以使用属性代替公共成
员变量吗？ 124
问题84  为什么要引入重载方法？ 125
问题85  重载和重写有什么区别？ 127
问题86  怎样使用类的多态特性？ 129
问题87  能够将非静态的方法重写
成静态方法吗？ 131
问题88  为什么要封装？ 132
问题89  类只可以单继承吗？ 134
问题90  可以在子类的构造函数中
调用虚方法吗？ 136
第7章  异常处理和程序调试 139
问题91  什么是结构化异常处理机制？ 140
问题92  如何编写专有的catch语
句处理异常？ 141
问题93  如何避免类型转换时产生
的异常？ 143
问题94  异常处理可以自定义吗？ 144
问题95  怎样使用日志记录程序中
的异常？ 145
问题96  在try语句中使用return时，
finally语句是否仍然被执行？ 146
问题97  在程序中插入断点有哪几
种方式？ 147
问题98  如何处理程序中的BUG？ 148
问题99  如何处理重载相等运算符
引发的异常？ 149
问题100  为什么更改常量运行后
得到的值不变？ 152
问题101  为什么使用null与DBNull
进行比较会引发异常？ 154
问题102  为什么将空值保存到日期
字段却不为空？ 156
问题103  使用params关键字时出
现空引用是怎么回事？ 159
问题104  如何解决传递派生类引发
的异常？ 161
问题105  如何处理使用DataReader
读取数据引发的异常？ 163
第8章  Windows窗体 166
问题106  如何随机更换窗体主界
面背景？ 167
问题107  如何实现鼠标穿透窗体？ 168
问题108  Office精灵是怎么制作的？ 170
问题109  怎样实现无边框窗体的
拖动？ 172
问题110  如何通过拖动工作区来
移动窗体？ 173
问题111  怎样向窗体中拖动图片？ 173
问题112  图形形状的窗体是怎么
制作的？ 175
问题113  多文档界面是如何制作的？ 177
问题114  如何设置系统托盘图标？ 177
问题115  如何通过子窗体刷新父
窗体？ 179
问题116  MDI窗体中的子窗体应
该怎样布局？ 181
问题117  如何修改继承窗体中控
件的属性？ 182
第9章  Windows应用程序常用控件 185
问题118  控件和窗体是同一基类吗？ 186
问题119  如何创建可以拉伸的菜单？ 186
问题120  如何制作带历史信息的
下拉列表？ 188
问题121  如何设计TextBox中只允
许输入数值？ 189
问题122  如何屏蔽TextBox控件上
的粘贴功能？ 190
问题123  如何将数据库中的数据添
加到ListView控件中？ 191
问题124  如何设置RichTextBox中文
本的对齐方式？ 192
问题125  怎样实现在得到鼠标焦点后
自动放大的Button按钮？ 193
问题126  在程序运行时如何智能增
减控件？ 194
问题127  如何将集合元素添加到
ComboBox控件？ 196
问题128  Office助手是怎么实现的？ 197
问题129  如何对ListBox控件项进
行降序排列？ 198
问题130  如何使用选择控件实现
复杂查询？ 198
问题131  MDI子窗体的菜单是如何
与主窗体的菜单合并的？ 199
问题132  如何打开一个最近打开
过的文件？ 203
问题133  如何实现只能在打开对话框
中选择文本文件？ 204
问题134  如何实现工具栏的拖动？ 205
问题135  制作一个OutLook式的窗
体需要用到哪些控件？ 206
第10章  Windows应用程序高级
控件 207
问题136  如何获取弹出对话框的相
关返回值？ 208
问题137  如何利用选择控件实现
权限设置？ 208
问题138  如何在ListView中显示
图像列？ 210
问题139  如何设置“打开”对话框
中只能选择图片文件？ 211
问题140  如何制作带复选框的ListView
控件？ 213
问题141  类QQ的程序界面该如
何实现？ 214
问题142  如何使用键盘和鼠标获得
TreeView中的节点？ 217
问题143  如何实现一个日历计划
任务？ 219
问题144  如何使用TreeView控件
制作导航菜单？ 221
问题145  如何使用MaskedTextBox
控件进行输入验证？ 223
问题146  ListView控件中的数据排序
是如何实现的？ 224
问题147  如何制作动画背景窗体？ 225
问题148  如何实现播放幻灯片的屏幕
保护程序？ 226
问题149  怎样实现闪烁的标题栏？ 228
问题150  如何使用ProgressBar控件显
示操作的进度？ 229
第11章  C#面向对象高级技术 231
问题151  C#语言如何实现多重继
承的特性？ 232
问题152  为什么在使用具有相同签名
的接口方法时会出错？ 233
问题153  接口和抽象类的区别是
什么？ 234
问题154  什么是接口分离原则？ 235
问题155  结构可以实现接口吗？ 236
问题156  如何使用虚方法或接口
截取系统消息？ 237
问题157  如何使用分部类记录
数据信息？ 239
问题158  哪种情况下需要用到
密封类？ 240
问题159  密封类可以添加新方法吗？ 241
问题160  如何应用C#中的委托？ 242
问题161  如何应用C#中的匿名
方法？ 243
问题162  可否使用迭代器实现字
符串的倒序输出？ 245
问题163  泛型是用来干什么的，如何
自定义一个泛型方法？ 246
问题164  怎样声明和使用泛型接口？ 248
问题165  面向对象设计时需要注
意的问题有哪些？ 249
第12章  数据访问技术 251
问题166  Windows身份验证和混合模式
身份验证有什么区别？ 252
问题167  如何判断计算机中是否
安装了SQL软件？ 253
问题168  如何查看、修改和删除
触发器？ 253
问题169  设计存储过程应当遵循
哪些规则？ 255
问题170  如何正确地理解和使用
SQL中的关键字？ 257
问题171  如何在C#中调用存储过程？ 257
问题172  如何理解对象
模型？ 261
问题173  如何防范SQL注入式攻击？ 262
问题174  如何进行数据库备份及
还原？ 262
问题175  什么是LINQ，它有什么
好处？ 263
问题176  设置通用方法获取查询
结果DataSet数据集 264
问题177  如何将图片以二进制形式
保存到数据库中？ 265
问题178  追加查询结果到已存在的
表中 266
问题179  如何使用IN引入子查询
限定查询范围？ 267
问题180  使用事务向数据库中批
量插入数据 268
第13章  水晶报表与打印 270
问题181  如何快速创建水晶报表？ 271
问题182  如何设置图片成为整个
报表的背景？ 273
问题183  如何设置水晶报表的页面？ 273
问题184  如何设置报表的打印日
期与时间？ 274
问题185  如何在报表中使用
文本对象？ 275
问题186  如何在报表中筛选数据？ 276
问题187  如何排序报表数据？ 277
问题188  如何在水晶报表中使用
子报表？ 278
问题189  如何在报表中计算百分比？ 279
问题190  如何使用PrintDocument
控件打印窗体数据？ 280
问题191  巧用PrintPreviewControl
控件实现打印预览 281
问题192  如何实现图形打印？ 282
问题193  如何使用Excel打印学生
信息报表？ 284
问题194  如何使用PrintDocument
控件打印文本文件? 285
第14章  文件及数据流技术 288
问题195  如何检索路径中的文件
名和扩展名？ 289
问题196  如何获得文件大小？ 289
问题197  如何使用FileStream流读
写数据？ 290
问题198  如何使用双缓冲技术绘图？ 292
问题199  如何监视文件系统变化
情况？ 292
问题200  如何向文件中写入数据？ 293
问题201  如何读取文件中所有数据？ 294
问题202  如何实现文件替换？ 294
问题203  如何使用递归方法删除文
件夹中的所有文件？ 295
问题204  如何使用OpenRead方法
打开现有文件？ 296
问题205  使用StreamReader类读取
系统创建的文本文件时，
为什么会出现乱码？ 296
问题206  如何修改文件夹名称？ 297
问题207  如何遍历文件夹？ 298
问题208  如何读写内存数据流？ 299
问题209  如何在C#中实现文件
拖放？ 300
问题210  如何使用缓冲流复制文件？ 300
问题211  如何搜索文件？ 301
问题212  如何产生随机文件夹名
或文件名？ 303
第15章  GDI+绘图 304
问题213  怎样实现在图片上平滑
移动文字？ 305
问题214  如何将文字保存为图片？ 306
问题215  通过重写窗体的OnPaint
方法绘图 306
问题216  如何获取一张图片中某个
点的RGB值？ 307
问题217  如何为批量图片添加
水印文字？ 308
问题218  如何利用直线和曲线
消除锯齿？ 312
问题219  如何在GDI中缩放图像？ 313
问题220  如何利用柱形图表分析
汇总数据？ 314
问题221  如何利用饼形图分析公
司男女比例？ 316
问题222  如何用马赛克效果
显示图像？ 317
第16章  多线程技术 320
问题223  线程与进程之间是什么
关系？ 321
问题224  挂起线程与终止线程的
区别是什么？ 322
问题225  C#如何控制多线程之间
的优先级顺序？ 324
问题226  如何应用CLR线程池来
管理多线程？ 326
问题227  实现多线程同步的方法
有几种？ 327
问题228  异步执行线程的两种常
用方法是什么？ 329
问题229  产生竞态条件的原理是
什么？ 331
问题230  多线程是如何产生死锁的？ 333
问题231  多线程产生死锁的解决
办法是什么？ 335
问题232  线程的执行方法可以有
参数吗？ 337
问题233  如何让线程跨越应用程
序域执行？ 338
问题234  怎样通过线程监控指定
文件夹中的文件变化？ 340
问题235  是否可以通过创建线程
来连接数据库？ 341
问题236  C#如何使用多线程访问
窗体上控件？ 342
问题237  使用多线程技术有什么
优缺点？ 344
第17章  网络编程技术 345
问题238  TCP/IP协议的实现原理
是什么？ 346
问题239  UDP协议的实现原理是
什么？ 347
问题240  TCP协议和UDP协议的
区别是什么？ 347
问题241  FTP服务器有哪几种登
录方式？ 348
问题242  侦听网络传入连接的方式
通常有哪几种？ 349
问题243  如何使用C#程序来发送
电子邮件？ 350
问题244  如何扫描局域网中的所
有IP地址？ 352
问题245  修改本机的IP地址是怎
么实现的？ 356
问题246  修改本机的DNS地址是
怎么实现的？ 357
问题247  使用C#程序获取本机的
MAC地址 359
问题248  检测计算机是否存在网
络连接？ 360
问题249  如何获取网络中某台计
算机的磁盘信息？ 361
问题250  怎样获得系统打开的端
口和状态？ 363
问题251  可以通过编程的方式实现
Ping命令操作吗？ 364
问题252  C#如何调用OutLook发
送邮件？ 366
问题253  如何以断点续传方式下
载文件？ 367
第18章  注册表技术 371
问题254  如何获取当前项的所有
子项名称？ 372
问题255  如何获取与当前项关联
的所有值名称？ 373
问题256  DeleteSubKey与eleteSubKeyTree方法有什么区别？ 373
问题257  如何使用C#遍历注册表
中的所有项？ 374
问题258  怎样通过注册表来禁用
“外观”选项卡？ 377
问题259  如何通过注册表获取IE
浏览器的版本？ 377
问题260  如何通过注册表获取
Windows版本号？ 378
问题261  C#备份与还原注册表是
如何实现的？ 379
问题262  可否使用C#建立文件与
应用程序的关联？ 381
问题263  是否可以使用C#在右键菜
单中添加新菜单命令？ 382
问题264  是否可以通过操作注册表
来设置桌面背景？ 383
问题265  可以实现禁止任务栏上
的右键功能吗？ 384
问题266  如何通过注册表来优化
开关机速度？ 384
问题267  如何禁止使用控制面板的
添加/删除程序功能？ 385
问题268  隐藏磁盘驱动器是如何
实现的？ 385
问题269  怎样屏蔽“开始”菜单中
的“关机”功能？ 387
问题270  怎样实现自动关闭停止
响应的程序？ 387
问题271  如何通过注册表控制程序
的开机启动？ 388
问题272  怎样通过注册表来控制
软件的试用次数？ 389
问题273  可以通过程序自动配置
ODBC数据源吗？ 389
第19章  C#语言新技术 391
问题274  为什么说LINQ查询表达式的
执行是延迟执行？ 392
问题275  可以强制LINQ查询表达
式立即执行吗？ 393
问题276  如何使用Lambda表达式替换Predicate<T>泛型委托？ 394
问题277  是否可以使用LINQ技术简化
序列到泛型列表的转换？ 395
问题278  使用LINQ技术可以操作
非泛型集合吗？ 397
问题279  怎样通过扩展方法来自
定义操作符？ 398
问题280  如何使用LINQ技术快速
查找重复字符串？ 399
问题281  一个实体可以映射来自
多个表的数据吗？ 400
问题282  可以使用LINQ技术操作
存储过程吗？ 401
问题283  可以使用LINQ技术获取
数据库连接信息吗？ 402
问题284  防止SQL注入可以使用
LINQ技术实现吗？ 403
问题285  怎样使用LINQ技术实现
数据的分页功能？ 404
问题286  怎样使用LINQ技术查询
DataSet中的多个表？ 406
问题287  如何将DataSet的查询结
果转换为DataTable？ 408
问题288  如何将DataSet的查询结
果转换为DataView？ 408
问题289  如何使用LINQ技术向XML
文件中添加数据？ 409
问题290  如何使用LINQ技术修改
XML文件中的数据？ 410
问题291  如何使用LINQ技术删除
XML文件中的数据？ 411
问题292  合计XML中指定元素的
值该如何实现？ 412
问题293  可以把SQL数据表中的
数据转换成XML吗？ 413
第20章  Windows应用程序打包部署 415
问题294  Windows Installer有什么
作用？ 416
问题295  为Windows安装程序添加
程序菜单是怎么实现的？ 416
问题296  制作安装程序时如何打包
.NET Framework框架？ 418
问题297  怎样打包注册表信息？ 419
问题298  打包程序时怎样设置
桌面图标？ 420
问题299  如何将特定文件安装到
指定文件夹中？ 422
问题300  怎样部署Windows
应用程序？ 423
问题301  打包生成的.exe文件和
.msi文件有何区别？ 424