目录 1
前言 1
第1章 简单的C#程序设计 1
1.1 面向对象编程的基本概念 1
1.1.1 任何事物都是一个对象 1
1.1.2 面向对象程序设计语言的三大原则 2
1.2 C#行环境Microsoft.NET简介 3
1.2.1 Microsoft.NET平台 3
1.2.2 .NET框架 4
1.3 简单C#程序的编写与运行 5
1.3.1 使用.NET编辑器构建与运行C#程序 6
1.3.2 使用“控制台应用程序”的框架构建C#程序 8
1.3.3 使用Windows应用程序框架构建与运行C#程序 10
1.4 遍历简单的C#程序代码 15
1.4.5 命名空间与using指令 16
1.4.4 System.Console.WriteLine方法 16
1.4.3 Main方法 16
1.4.2 类与成员 16
1.4.1 C#与C++程序设计的区别 16
1.4.6 程序框架 18
1.5 C#程序设计准则 18
1.5.1 何时定义用户自己的命名空间 18
1.5.2 命名准则 18
小结 20
习题一 20
第2章 类型系统与数据类型 22
2.1 任何事物都是一个对象 22
2.2 值类型与引用类型 22
2.2.1 值类型 22
2.2.2 引用类型 25
2.2.3 值类型与引用类型的根本区别 27
2.3.3 注意 28
2.3.2 拆箱操作 28
2.3.1 装箱操作 28
2.3 装箱与拆箱 28
2.3.4 应用示例 29
2.4 所有类型的根:Sysrtem.Object 30
2.4.1 System.Object类型的公有方法 30
2.4.2 System.Object类型的保护方法 31
2.5 类型与别名 31
2.6 类型间的强制转换 31
2.6.1 向上隐式转型 31
2.6.2 向下显式转型 32
2.6.3 使用as实现转型 33
2.7 命名空间与using关键字 34
2.7.1 命名空间 34
2.7.2 using关键字 34
小结 35
习题二 36
3.2.2 字符串输出 38
3.2.1 基本方法 38
第3章 控制台输入/输出 38
3.2 控制台输出 38
3.1 控制台I/O类 38
3.2.3 基本的数据输出 41
3.2.4 一般的格式化输出 42
3.2.5 特殊的格式化输出 44
3.2.6 日期与时间的格式化输出 45
3.3 控制台输入 47
3.3.1 使用方法与形式 47
3.3.2 应用示例 48
小结 54
习题三 54
第4章 表达式与运算符 55
4.1 定义的运算符 55
4.2 运算符的优先级 55
4.2.1 C#运算符优先级的确定 56
4.2.2 左结合性与右结合性 57
4.2.3 实际的使用 58
4.3 C#运算符 59
4.3.1 基本的表达式运算符 59
4.3.2 数学运算符 65
4.3.3 关系运算符 76
4.3.4 简单的赋值运算符 77
4.3.5 其他运算符的应用示例 80
小结 86
习题四 86
第5章 程序流控制 89
5.1 块语句 89
5.1.1 用法 89
5.1.2 应用示例 89
5.2.1 if语句(选择型结构) 90
5.2 选择型语句 90
5.2.2 switch语句 97
5.3 循环型语句(循环型结构) 103
5.3.1 while语句(前判断循环型结构) 103
5.3.2 do/while语句(后判断循环型结构) 108
5.3.3 for语句 113
5.3.4 foreach语句 124
5.4 转移语句 128
5.4.1 break语句 128
5.4.2 continue语句 131
5.4.3 goto语句 133
5.4.4 return语句 138
小结 139
习题五 139
第6章 类 145
6.1 类的定义 145
6.3 访问修饰符 146
6.2 类成员 146
6.4 Main方法 147
6.4.1 命令行参数 148
6.4.2 返回值 149
6.4.3 多重Main方法 149
6.5 构造方法 150
6.5.1 静态构造方法的定义与使用 150
6.5.2 静态成员与实例成员 152
6.5.3 构造方法初始化 153
6.6 常量与只读域 157
6.6.1 常量 157
6.6.2 只读域 158
6.7 继承 159
6.7.1 继承的使用 159
6.7.2 多重接口 165
6.7.3 sealed类 167
习题六 168
小结 168
第7章 方法 170
7.1 方法的定义与调用 170
7.1.1 方法的定义 170
7.1.2 方法的调用 171
7.2 值方法的参数 171
7.3 ref和out方法参数 173
7.3.1 ref方法参数 173
7.3.2 out方法参数 175
7.4 方法重载 178
7.4.1 重载传递不同参数的同名方法 178
7.4.2 重载构造方法 180
7.5 可变的方法参数 184
7.5.1 用法 184
7.5.2 示例 184
7.6 虚拟方法 187
7.6.1 方法抑制 188
7.6.2 多态性 189
7.7 静态方法 192
7.7.1 静态方法的定义与调用 192
7.7.2 访问类成员 193
小结 193
习题七 194
第8章 属性、数组与索引器 197
8.1 属性 197
8.1.1 属性的定义与使用 198
8.1.2 只读属性 201
8.1.3 继承属性 204
8.1.4 属性的高级使用 206
8.2 数组 207
8.2.1 一维数组 207
8.2.2 多维数组 216
8.2.3 秩的查询 222
8.2.4 可变数组 224
8.3 索引器 230
8.3.1 索引器的定义 230
8.3.2 索引器的使用 231
小结 236
习题八 236
第9章 属性信息 238
9.1 属性信息的引入 238
9.2 属性信息的定义 239
9.3 有关属性信息的查询 240
9.3.1 类属性信息 240
9.3.2 方法属性信息 242
9.3.3 域属性信息 243
9.4 属性信息参数 245
9.4.1 位置参数与命名参数 245
9.4.2 具有命名参数的常见错误 246
9.5.1 属性信息目标的定义 247
9.5 AttributeUsage属性信息 247
9.4.3 合法的属性信息参数类型 247
9.5.2 属性信息的单一使用与多重使用 249
9.5.3 继承属性信息的规则 250
9.6 属性信息标识符 250
小结 251
习题九 251
第10章 接口 253
10.1 接口的使用 253
10.2 接口的声明 253
10.3 接口的实现 254
10.3.1 通过使用is实现查询 266
10.3.2 通过使用as实现查询 267
10.4 显式接口成员名的限定 270
10.4.1 具有接口的名字隐藏 270
10.4.2 避免名字二重性 272
10.5 接口与继承 275
10.6 接口的组合 278
小结 279
习题十 280
第11章 异常处理 282
11.1 异常处理概念 282
11.2 基本的异常处理语法 283
11.2.1 抛出异常 283
11.2.2 捕捉异常 283
11.2.3 重新抛出异常 285
11.2.4 用finally清理 286
11.3 System.Exception类的使用 290
11.3.1 Exception对象的构建 292
11.3.2 StackTrace属性的使用 294
11.3.3 多重异常类型的捕捉 295
11.3.4 派生用户自己的异常类 297
11.4 具有异常处理代码的设计 298
11.4.1 具有try块的设计 298
11.4.2 具有catch块的设计 299
小结 301
习题十一 301
第12章 代表与事件处理以及结构与枚举 303
12.1 代表的声明与使用的一般形式 303
12.1.1 代表的声明 303
12.1.2 代表的使用 303
12.2 使用代表作为callback方法 304
12.3 定义代表作为静态成员 306
12.4 创建代表的时机 309
12.5 代表的构成 311
12.6 用代表定义事件 316
12.7 结构 321
12.7.1 结构类型的声明 321
12.7.2 结构的使用 322
12.8.1 枚举 326
12.8 枚举的声明 326
12.8.2 枚举的使用 327
小结 330
习题十二 330
第13章 运算符重载与用户定义的转换 332
13.1 运算符重载 332
13.1.1 语法与示例 332
13.1.2 可重载的运算符 335
13.1.3 运算符重载的限制 338
13.1.4 设计准则 339
13.2 用户定义的转换 339
13.2.1 引例 339
13.2.2 语法与示例 339
小结 344
习题十三 344
14.2 C#的多线程应用程序 345
14.1.2 前后关系变换 345
14.1.1 多线程与多任务 345
14.1 多线程基础 345
第14章 多线程程序设计 345
14.3 用多线程工作 347
14.3.1 AppDomain 347
14.3.2 Thread类 347
14.3.3 多线程的调度 349
14.4 线程安全与同步 353
14.4.1 通过使用Monitor类的代码保护 353
14.4.2 使用具有C#lock语句的监控锁定 356
14.4.3 通过使用Mutex类的代码同步 358
14.4.4 线程安全与.NET类 360
14.5 线程策略 360
14.5.1 何时使用多线程 360
14.5.2 何时不使用多线程 360
小结 361
习题十四 361
15.1.2 Type类 363
15.1.1 映射API层次结构 363
第15章 元数据查询与文件操作 363
15.1 用映射查询元数据 363
15.2 文件与流类 368
15.2.1 文件与流的概念 368
15.2.2 文件与流类 368
15.3 读文本文件 369
15.4 写文本文件 372
15.5 读二进制文件 373
15.6 写二进制文件 374
小结 375
习题十五 375
附录 377
附录A 书中所使用的符号说明 377
附录B 参考答案 377
参考文献 426