目录


第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时有什么技巧

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

1.6思考与练习

第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.5如何利用Convert做进制转换

2.8.6不同数据类型混合运算时的类型提升问题

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

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

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

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

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

2.9思考与练习





第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思考与练习

第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.5base

4.14.6protected修饰符

4.15多态

4.16接口

4.17匿名类型

4.18结构

4.18.1DateTime

4.18.2TimeSpan

4.19object类

4.19.1相等问题

4.19.2Type和GetType()

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重载(overload)与重写(override)

4.20.7抽象方法和虚方法

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

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

4.20.10base与this

4.20.11什么是运算符重载

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

4.21思考与练习

第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如何查找数组中具有特定特征的元素

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

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

5.6思考与练习

第6章字符串

6.1字符串及其转义符

6.1.1字符串及其构造

6.1.2字符转义

6.1.3+的多义性

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.5.5如何将文本朗读出来

6.6思考与练习

第7章WinForm初步

7.1窗体

7.1.1窗体常用属性

7.1.2窗体常用方法

7.1.3窗体常用事件

7.1.4窗体的生命周期

7.2控件常用操作

7.2.1控件添加

7.2.2控件调整

7.2.3控件分层

7.2.4控件定位

7.2.5控件大小

7.2.6控件锚定Anchor

7.2.7控件停靠Dock

7.2.8控件的Tab键顺序

7.3控件的键盘和鼠标事件

7.3.1键盘事件处理

7.3.2鼠标事件处理

7.4基本控件

7.4.1Label控件

7.4.2Button控件

7.4.3RadioButton控件

7.4.4CheckBox控件

7.4.5TextBox控件

7.4.6ListBox控件

7.4.7ComboBox控件

7.4.8PictureBox控件

7.4.9NumericUpDown控件

7.4.10ProgressBar控件

7.4.11HScrollBar控件和 VScrollBar控件

7.4.12TrackBar控件

7.4.13ToolTip控件

7.4.14GroupBox控件

7.4.15Panel控件

7.4.16MonthCalendar控件

7.5常用组件

7.5.1Timer组件

7.5.2ImageList组件

7.6菜单

7.6.1MenuStrip控件

7.6.2ContextMenuStrip控件

7.6.3ToolStrip控件

7.6.4StatusStrip控件

7.7对话框

7.7.1OpenFileDialog控件

7.7.2SaveFileDialog控件

7.7.3FontDialog控件

7.7.4ColorDialog控件

7.7.5FolderBrowserDialog控件

7.8高级控件

7.8.1RichTextBox控件

7.8.2CheckedListBox控件

7.8.3TabControl控件

7.8.4ListView控件

7.8.5TreeView控件

7.8.6WebBrowser控件

7.9COM组件

7.9.1Shockwave Flash Object

7.9.2Windows Media Player

7.10MDI

7.11问与答

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

7.11.2Click和MouseClick有何关系

7.11.3Enter、Leave事件与MouseEnter、MouseLeave事件有何关系

7.11.4如何弹出各类消息框

7.11.5多种鼠标事件有何关系

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

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

7.11.8如何实现轻量级的音频播放

7.11.9如何实现拖放

7.11.10关于剪贴板

7.11.11如何动态构建控件树

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

7.11.13如何获取网页源代码

7.11.14如何实现非规则窗体及其无标题栏窗体的拖动

7.11.15如何实现列表框项的批量转换

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.1using的作用

8.3.2如何创建临时文件

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

8.3.4如何发送邮件

8.4思考与练习

第9章集合与泛型

9.1集合

9.1.1ArrayList

9.1.2Queue

9.1.3Stack

9.1.4Hashtable

9.1.5SortedList

9.1.6BitArray

9.2泛型

9.2.1泛型类

9.2.2泛型类实例间的关系

9.2.3泛型及其前辈——object

9.2.4多参数的泛型类

9.2.5泛型方法

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什么是可空类型(Nullable)

9.4.6什么是Tuple

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

9.4.8泛型的比较问题

9.4.9HashSetT的扩展方法

9.4.10集合的运算

9.5思考与练习

第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.6常用应用

10.6.1格式转换

10.6.2水印

10.6.3灰化

10.6.4底片

10.6.5浮雕

10.6.6文本打印

10.7问与答

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

10.7.2如何提取GIF动画中的各帧

10.7.3如何截屏

10.7.4Math类

10.8思考与练习

第11章多线程

11.1进程

11.2多线程基础操作

11.2.1创建线程

11.2.2启动线程

11.2.3线程优先级问题

11.2.4后台线程问题

11.2.5终止线程

11.2.6暂停线程

11.2.7合并线程

11.3线程同步

11.3.1lock

11.3.2Monitor

11.3.3Mutex

11.3.4ContextBoundObject

11.3.5ManualResetEvent

11.3.6AutoResetEvent

11.4线程池

11.5跨线程的控件访问

11.6多线程时的界面卡死问题

11.7BackgroundWorker组件

11.8问与答

11.8.1如何延时且界面不卡死

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

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

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

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

11.9思考与练习

第12章序列化

12.1二进制序列化

12.2SOAP序列化

12.3XML序列化

12.4问与答

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

12.4.2如何序列化到内存流

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

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

12.5思考与练习

第13章SQL

13.1数据库基本概念

13.2SQL学习环境及基本操作

13.2.1Microsoft SQL Server Management Studio

13.2.2数据库与表的基本SQL操作

13.3Insert

13.4Select

13.4.1手工方式

13.4.2Select语句

13.4.3查询指定字段

13.4.4排序

13.4.5过滤

13.4.6查询前n条记录

13.4.7模糊查询

13.4.8统计

13.4.9分组

13.4.10空值查询

13.5Update

13.6Delete

13.7问与答

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

13.7.2修改数据表后无法保存怎么办

13.7.3如何只返回不重复的记录

13.7.4如何指定结果的列标题

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

13.7.6如何使用between关键字

13.7.7如何使用in关键字
13.7.8如何使用[]和[^]通配符

13.7.9compute子句如何使用

13.7.10什么是联合查询

13.7.11什么是嵌套查询

13.8思考与练习

第14章ADO.NET

14.1Connection

14.2Command

14.3DataReader

14.4DataAdapter

14.4.1DataAdapter及其使用范式

14.4.2DataAdapter增删改查使用示例

14.5DataSet

14.5.1DataSet及其使用范式

14.5.2DataSet增删改查示例

14.6参数化查询

14.7数据绑定

14.7.1相关控件与组件

14.7.2简单控件绑定

14.7.3复杂控件绑定

14.7.4数据绑定示例

14.8问与答

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

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

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

14.8.4将带有引号等的特殊内容(如HTML源代码)存储到数据库中
出错怎么办

14.8.5如何使用App.config文件

14.8.6如何使用DataTable

14.9思考与练习

第15章异常处理及调试

15.1异常处理

15.1.1异常处理的几种形式

15.1.2异常的抛出

15.1.3自定义异常

15.2调试

15.3条件断点

参考文献