第1章 C#语言基础 1
1.1 C#的由来 1
1.2 了解.NET 2
1.3 熟悉开发环境 4
1.3.1 长文件名 4
1.3.2 控制台方式 5
1.4 安装C#编译器 6
1.5 选择一个C#编辑器 7
1.6 编译和运行第一个C#应用程序 8
1.7 C#应用程序的基本结构 12
1.8 本章小结 15
1.9 本章习题 15
2.1 数据类型简介 16
第2章 数据类型 16
2.2 变量和常量 17
2.2.1 变量 17
2.2.2 常量 18
2.3 数值类型 19
2.3.1 整数类型 19
2.3.2 浮点数类型 21
2.3.3 小数类型 23
2.3.4 字符类型 23
2.3.5 布尔类型 25
2.3.6 简单数值类 25
2.4 引用类型 27
2.4.1 对象类型 27
2.4.2 字串类型 28
2.5 变量赋初值 30
2.6 数据类型转换 31
2.6.1 数值类型的隐式转换 31
2.6.2 数值类型的显式转换 33
2.6.3 打包转换 34
2.6.4 拆包转换 35
2.7 本章小结 36
2.8 本章习题 36
第3章 运算符和表达式 37
3.1 概述 37
3.2 算术运算符和算术表达式 38
3.2.1 递增和递减运算符 38
3.2.2 正负运算符 40
3.2.3 乘法和除法运算符 41
3.2.4 取余运算符 42
3.2.5 加法和减法运算符 44
3.3 关系运算符和关系表达式 45
3.3.1 比较运算符 45
3.3.2 等式运算符 45
3.3.3 is运算符 47
3.4 逻辑运算符和逻辑表达式 48
3.5 位运算符 49
3.5.1 位运算基础 49
3.5.2 位运算符及表达式 50
3.5.3 位运算举例 52
3.6 条件运算符及表达式 55
3.6.1 ?:运算符 55
3.6.2 “as”运算符 56
3.7 赋值运算符及赋值表达式 57
3.8.1 new运算符 58
3.8 其他运算符 58
3.8.2 sizeof 59
3.8.3 typeof 59
3.8.4 checked和unchecked 60
3.9 运算符的优先级 62
3.10 本章小结 63
3.11 本章习题 63
第4章 控制台输入和输出 66
4.1 概述 66
4.2 Format方法和ToString方法 67
4.3 数据格式 68
4.3.1 标准格式字串 68
4.3.2 自定义格式字串 71
4.4 Parse方法 74
4.5 日期和时间数据格式化 76
4.5.1 DateTime类概述 76
4.5.2 格式化日期时间数据 78
4.6 数据输入 80
4.6.1 Console.Read方法 80
4.6.2 Console.ReadLine方法 81
4.7 数据输出 82
4.7.1 Console.Write方法 82
4.7.2 Console.WriteLine方法 84
4.8 程序举例 85
4.9 本章小结 86
4.10 本章习题 86
第5章 选择和循环结构 88
5.1 程序的基本结构 88
5.2.1 if语句 90
5.2 选择结构 90
5.2.2 switch语句 93
5.3 循环结构 94
5.3.1 使用goto语句和if语句构成循环 94
5.3.2 while语句 95
5.3.3 do-while语句 96
5.3.4 for语句 97
5.3.5 foreach-in语句 98
5.3.6 循环的嵌套 100
5.3.7 几种循环语句的比较 100
5.4 break语句 101
5.5 continue语句 104
5.6 程序举例 105
5.8 本章习题 109
5.7 本章小结 109
第6章 数组 111
6.1 一维数组 111
6.1.1 一维数组的声明 111
6.1.2 一维数组元素的使用 112
6.1.3 一维数组的初始化 113
6.1.4 一维数组应用举例 114
6.2 多维数组 116
6.2.1 多维数组的声明 116
6.2.2 多维数组元素的使用 117
6.2.3 多维数组的初始化 118
6.2.4 程序举例 119
6.3 AOA数组 120
6.3.1 AoA数组的声明 120
6.3.2 AoA数组元素的使用 121
6.4 System.Array类 122
6.4.1 Array类的属性 122
6.3.3 AoA数组的初始化 122
6.4.2 使用Array类构造数组 124
6.4.3 Array类的方法 125
6.5 本章小结 129
6.6 本章习题 130
第7章 面向对象和类 131
7.1 面向对象编程简介 131
7.2 命名空间 133
7.2.1 命名空间的声明 133
7.2.2 命名空间的使用 134
7.3 声明自己的类 134
7.3.1 面向对象的初步设计 135
7.3.2 封装数据 135
7.3.3 构造和析构 136
7.3.4 方法 137
7.3.5 使用定义的类 139
7.4 域 142
7.4.1 域的声明 142
7.4.2 只读域 144
7.5 属性 145
7.6 索引 149
7.7 重载 150
7.7.1 重载的一般概念 150
7.7.2 方法的参数 151
7.7.3 运算符重载 156
7.8 本章小结 158
7.9 本章习题 159
8.1.1 派生Manager类 161
8.1 继承的初步 161
第8章 继承 161
8.1.2 base关键字 165
8.1.3 禁止继承 167
8.1.4 保护访问 168
8.1.5 内部访问 169
8.1.6 成员访问级别 170
8.2 多态性和虚成员 171
8.3 抽象类 173
8.4 造型(Cast) 176
8.5 本章小结 178
8.6 本章习题 178
第9章 接口和代理 180
9.1 接口 180
9.1.1 接口的声明 181
9.1.2 接口的使用 182
9.1.3 接口与抽象类的比较 186
9.1.4 System命名空间的常用接口 186
9.1.5 程序举例 187
9.2 代理 191
9.2.1 代理的声明 192
9.2.2 代理的使用 192
9.2.3 System.Delegate类 194
9.2.4 事件(Event) 197
9.3 本章小结 202
9.4 本章习题 203
第10章 结构和枚举 204
10.1 结构 204
10.1.1 结构的声明 204
10.1.2 结构的使用 206
10.1.3 结构和类的区别 208
10.2 枚举 209
10.2.1 枚举的声明 209
10.2.2 枚举的使用 210
10.2.3 System.Enurn类 212
10.3 本章小结 216
10.4 本章习题 217
第11章 异常和异常处理 219
11.1 概述 219
11.2 异常控制 220
11.2.1 抛出异常 220
11.2.2 捕捉异常 223
11.2.3 捕捉和控制多个异常 225
11.2.4 finally语句 227
11.3.1 System.Exception类 229
11.3 自定义异常类 229
11.3.2 System命名空间的异常类 232
11.3.3 使用自定义异常类 233
11.4 本章小结 237
11.5 本章习题 237
第12章 编译预处理和程序调试 238
12.1 编译预处理 238
12.1.1 符号声明 238
12.1.2 条件编译 239
12.1.3 #warning和#error关键字 242
12.1.4 #line关键字 244
12.1.5 #region和#endregion关键字 244
12.2 C#源程序的调试 246
12.3 本章小结 250
12.4 本章习题 250
13.1 概述 252
第13章 不安全代码 252
13.2 不安全代码模块 253
13.2.1 指针变量的声明 253
13.2.2 unsafe关键字 254
13.2.3 fixed关键字 255
13.3 在C#语言中使用指针 257
13.3.1 指向数组的指针 257
13.3.2 指向结构的指针 259
13.3.3 sizeof运算符 261
13.3.4 stackalloc关键字 262
13.4 本章小结 265
13.5 本章习题 265
第14章 代码属性 267
14.1 声明代码属性类 267
14.2 System.AttributeTagets枚举 268
14.3 System.ArrtibuteUsage类 269
14.3.1 AttributeUsage类的代码属性 269
14.3.2 AttributeUsage类的构造器 269
14.3.3 使用AttributeUsage类 270
14.4 条件代码属性和作废代码属性 271
14.4.1 条件代码属性 271
14.4.2 作废代码属性 273
14.5 外部方法和D11Import代码属性 274
14.6 自定义代码属性类 276
14.7 使用自定义代码属性类 278
14.8 本章小结 282
14.9 本章习题 282
附录1 C#语言关键字 284
附录2 部分习题提示与参考答案 285