第1章 初识C 1
1.1 Visual Studio.NET简介 1
1.2.NET Framework简介 1
1.3 C#简介 2
1.4 Visual Studio.NET开发环境 2
第2章 接触C 4
2.1 第一个C#程序 4
2.2 关于控制台程序 5
2.3 C#程序基本结构 6
2.3.1 最简单的C#结构 6
2.3.2 控制台基本输入和输出语句 6
2.4 编程习惯 8
第3章 C#语法 10
3.1 变量与常量 10
3.1.1 数值类型 10
3.1.2 变量定义 12
3.1.3 常量定义 13
3.1.4 数据类型转换 14
3.2 运算符 15
3.2.1 算术运算符 15
3.2.2 关系运算符 16
3.2.3 逻辑运算符 16
3.2.4 位运算符 17
3.2.5 赋值运算符 17
3.2.6 三元条件运算符 17
3.2.7 运算符的优先级 18
3.3 选择语句 18
3.3.1 if语句 18
3.3.2 switch语句 20
3.4 循环 21
3.4.1 while 21
3.4.2 do while 22
3.4.3 for 22
3.4.4 foreach语句 23
3.4.5 跳转语句 23
3.5 异常 25
3.5.1 try catch语句 25
3.5.2 throw语句 26
第4章 字符串、时间和简单数组 27
4.1 字符串 27
4.1.1 字符串的定义 27
4.1.2 转义字符 27
4.1.3 字符串的操作 28
4.1.4 数值与字符串的相互转化 30
4.1.5 占位符 31
4.1.6 string.Format() 32
4.1.7 格式化字符串 32
4.1.8 StringBuider 34
4.1.9 字符串索引 35
4.2 简单数组 35
4.2.1 一维数组 35
4.2.2 多维数组 37
4.2.3 锯齿数组 38
4.2.4 数组应用举例 38
4.3 时间 40
4.3.1 DateTime 40
4.3.2 日期时间字符串的显示格式 41
4.3.3 DateTime的计算 43
4.3.4 TimeSpan 43
第5章 面向对象编程 45
5.1 面向对象 45
5.2 类和对象 46
5.3 封装、继承、多态 47
5.4 程序结构 48
5.5 名称空间 51
5.6 部分类 52
5.7 类的成员 53
5.7.1 访问修饰符 53
5.7.2 字段 53
5.7.3 方法 54
5.7.4 属性 55
5.8 过程代码写在哪里 57
5.9 方法重载 58
5.10 构造函数 60
5.11 析构函数 63
5.12 this 63
5.13 静态成员 64
5.14 运算符重载 67
5.15 引用类型与值类型 70
5.16 装箱与拆箱 71
5.17 函数的参数 72
5.18 索引 78
5.19 结构 81
5.20 枚举 82
第6章 继承与多态 83
6.1 继承 83
6.2 base关键字 84
6.3 派生类的构造函数 85
6.4 Object类 87
6.5 多态 87
6.6 隐藏方法new 89
6.7 虚方法virtual-override 90
6.8 抽象类与抽象方法 91
6.9 密封类和密封方法 92
6.10 ToString() 92
6.11 接口interface 93
第7章 委托与事件 96
7.1 委托定义 96
7.2 委托参数 98
7.3 多播委托 100
7.4 匿名委托 101
7.5 委托耦合 101
7.6 关于事件 103
7.7 发布订阅 104
7.8 事件参数 106
7.9 事件句柄EventHandler 108
7.10 事件参数EventArgs 110
第8章 泛型 113
8.1 泛型概念 113
8.2 泛型类 113
8.2.1 定义泛型类 113
8.2.2 泛型类的默认值default 115
8.2.3 泛型约束 116
8.3 泛型接口 117
8.4 泛型结构 118
8.5 泛型方法 119
第9章 数组与集合 121
9.1 对象数组 121
9.2 Array类 122
9.2.1 Array数组创建 122
9.2.2 Array数组复制 123
9.2.3 Array数组排序 124
9.3 元组 125
9.4 列表 126
9.4.1 ArrayList 126
9.4.2 List<T> 127
9.5 队列 132
9.6 栈 133
9.7 链表 133
9.8 有序列表 134
9.9 字典 134
9.10 有序字典 136
9.11 Lookup类 136
9.12 集 137
9.13 可观察集合 138
9.14 位数组 139
9.14.1 BitArray 139
9.14.2 BitVector32 140
第10章 Windows窗体 143
10.1 第一个窗体 143
10.2 第一个按钮 144
10.3 多个窗体 144
10.4 认识窗体类 145
10.4.1 三个文件 145
10.4.2 Forml.cs 145
10.4.3 Forml.Designer.cs 146
10.5 简易计算器 147
10.6 窗体和控件的属性 148
10.6.1 大小和位置 148
10.6.2 控件的停泊与锚点 148
10.6.3 “捕捉按钮”小游戏 148
10.6.4 颜色设置 149
10.7 鼠标键盘事件 149
10.7.1 鼠标事件 149
10.7.2 键盘事件 151
10.7.3 两个特殊的键盘事件 152
10.8 事件的一些问题 153
10.9 多文档界面 154
10.10 窗体的状态 155
10.11 窗体事件的执行顺序 156
10.12 两个窗体之间传递数据 157
第11章 Windows控件 160
11.1 Windows工具箱 160
11.2 公共控件 160
11.2.1 RadioButton 161
11.2.2 CheckBox 162
11.2.3 ListBox 163
11.2.4 ComboBox 167
11.2.5 TreeView 168
11.2.6 PictureBox控件 170
11.3 菜单和工具栏 171
11.3.1 MenuStrip 171
11.3.2 ToolStrip 172
11.3.3 Context Men uStrip 173
11.4 容器控件 173
11.4.1 FlowLayoutPanel 173
11.4.2 TableLayoutPanel 173
11.4.3 SplitContainer 173
11.4.4 TabControl 174
11.5 对话框 174
11.5.1 ColorDialog和FontDialog 174
11.5.2 FolderBrowserDialog、OpenFileDialog和SaveFileDialog 175
第12章 文件操作 177
12.1 Directory和DirectoryInfo 177
12.1.1 Directory 177
12.1.2 DirectoryInfo 177
12.2 File和FileInfo 178
12.2.1 File 178
12.2.2 FileInfo 178
12.3 Path和DriveInfo 178
12.3.1 Path 178
12.3.2 相对路径 179
12.3.3 DriveInfo 179
12.4 文件读写 180
12.4.1 File读文件 180
12.4.2 写入文件 180
12.5 流 181
12.5.1 读写二进制文件 181
12.5.2 读写文本文件 183
12.6 资源管理器 184
第13章 数据库 187
13.1 C#与数据库的关系 187
13.2 SQL语言 188
13.3 ADO.NET 191
13.4 C#调用Access数据库 193
13.4.1 OleDbConnection 193
13.4.2 OleDbCommand 195
13.4.3 OleDbDataReader 197
13.4.4 OleDbDataAdapter 198
13.5 DataTable 199
13.5.1 DataTable的定义 200
13.5.2 DataColumn 200
13.5.3 DataRow 202
13.5.4 DataTable提取数据库数据 204
13.5.5 编辑DataTable中的数据 205
13.5.6 DataRow的状态 208
13.5.7 DataRow的版本 210
13.6 DataView 211
13.7 DataSet 213
13.7.1 DatSet与DataTable 213
13.7.2 DataSet关系 216
13.7.3 DataSet约束 218
13.8 DataGridView 222
13.8.1 行和列 222
13.8.2 单元格 223
13.8.3 行宽和列宽 224
13.8.4 冻结 225
13.8.5 排序 225
13.8.6 隐藏 225
13.8.7 列包含控件 225
13.8.8 虚拟模式 227
13.9 服务器资源管理器 227
13.10 BindingSource 229
13.10.1 BindingSource的简单应用 229
13.10.2 BindingSource的定位 229
13.10.3 BindingSource的排序过滤与查找 232
13.10.4 Binding类 233
13.11 可视化数据控件 235
13.11.1 DataSet控件 235
13.11.2 BindingNavigator控件 236
13.12 窗体控件与数据库 237
13.12.1 ComboBox 237
13.12.2 窗体控件与DataSet 239
13.12.3 控件的数据库向导 241
13.13 综合实例 242
13.13.1 创建数据库 242
13.13.2 创建主窗体 244
13.13.3 创建操作数据库的公共类 244
13.13.4 创建图书类别窗体 246
13.13.5 创建增加图书窗体 249
13.13.6 创建编辑图书窗体 251
13.13.7 创建图书查询窗体 253
13.14 C#调用SQL Server数据库 254
13.14.1 关于SQL Server Express数据库 254
13.14.2 创建SQL Server Express数据库 255
13.14.3 C#调用SQL Server Express数据库 258
第14章 Lambda表达式与扩展方法 260
14.1 代码简化的历程 260
14.1.1 代码简化1 260
14.1.2 代码简化2 263
14.1.3 代码简化3 264
14.1.4 代码简化4 265
14.1.5 代码简化5 265
14.1.6 代码简化6 266
14.2 Lambda表达式 266
14.3 Func,Action和Predicate 268
14.3.1 Func 268
14.3.2 Action 269
14.3.3 Predicate 269
14.4 委托在List<T>中的简单应用 269
14.5 扩展方法 270
第15章 Linq 273
15.1 准备数据 273
15.2 投影和筛选 274
15.3 排序 276
15.4 分组 277
15.5 复合from 278
15.6 延迟执行与立即执行 280
15.6.1 延迟执行 280
15.6.2 立即执行 282
第16章 GDI+绘图 283
16.1 GDI与GDI十 283
16.2 绘制简单图形 283
16.3 GDI+绘图原理 284
16.4 Color 285
16.4.1 RGB 285
16.4.2 ARGB 285
16.4.3 网络安全色 286
16.4.4 Color结构 286
16.5 Pen和Brush 286
16.5.1 Pen 286
16.5.2 Brush 287
16.6 Graphics 287
16.7 Point、Size和Rectangle 288
16.7.1 Point和PointF 288
16.7.2 Size和SizeF 289
16.7.3 Rectangle和RectangleF 289
16.8 绘制图形 289
16.9 绘制文本 290
16.10 绘制图片 291
16.11 图形变换 292
16.12 屏幕刷新问题 294
16.13 Invalidate 295
16.14 橡皮筋 297
16.15 Image和BitMap 298
16.16 ColorMatrix 301
16.17 绘制函数曲线 302
16.17.1 简单函数曲线 302
16.17.2 动态曲线 303
16.18 不使用OnPaint、Invalidate的方法 305
第17章 网络编程 306
17.1 网络基本概念 306
17.1.1 TCP/IP 306
17.1.2 Socket(套接字) 307
17.1.3 其他相关概念 307
17.1.4 客户与服务器 308
17.2 Socket程序 308
17.3 TCP程序 312
17.4 UDP程序 314
17.4.1 UDP客户端 314
17.4.2 UDP服务端 315
17.5 异步通信 316
17.5.1 同步和异步 316
17.5.2 Socket异步连接 316
17.5.3 Socket异步连接 319
17.6 聊天程序 320
17.6.1 客户端 321
17.6.2 服务端 322
第18章 线程 324
18.1 进程与线程 324
18.2 异步委托 324
18.2.1 同步委托 324
18.2.2 异步委托 325
18.2.3 IAsyncResult 326
18.2.4 异步回调AsyncCallback 327
18.2.5 异步回调的Lambda表达式 330
18.3 线程 330
18.3.1 Thread 330
18.3.2 给线程命名 332
18.3.3 给线程传递参数 332
18.3.4 线程的控制 333
18.3.5 优先级 335
18.4 线程池 336
18.5 争用 337
18.6 Windows窗体的线程问题 338
18.6.1 Timer控件的问题 338
18.6.2 System.Threading.Timer类 339
18.6.3 System.Timers类 340
18.7 BackgroundWorker 341
18.7.1 Background Worker控件 341
18.7.2 Background Worker类 344
18.8 窗体与线程交换数据的一种简易方法 345
第19章 关于变量命名 347
后记 350