第1章 概述 1
1.1 .NET概述 1
1.2 .NET与C 2
1.2.1支持多种编程语言的.NET结构框架 2
1.2.2面向.NET的全新开发工具C 2
1.3 C#语言的特点 3
1.3.1简洁的语法 3
1.3.2面向对象设计 3
1.3.3与Web的紧密结合 4
1.3.4安全性与错误处理 4
1.3.5版本处理技术 4
1.3.6灵活性和兼容性 5
1.4公用语言运行时环境与公用语言规范 5
1.4.1理解CLR 5
1.4.2可操控执行的含义 6
1.4.3 CLR的突出特色 6
1.4.4公用语言规范 7
第2章 编写第一个应用程序 9
2.1 Welcome程序 9
2.2代码分析 9
2.2.1名字空间 9
2.2.2类和类的方法 10
2.2.3程序的输入和输出 10
2.3运行程序 12
2.4添加注释 14
2.5小结 15
第3章 数据类型 16
3.1值类型 16
3.1.1简单类型 16
3.1.2结构类型 19
3.1.3枚举类型 20
3.2引用类型 21
3.2.1类 21
3.2.2数组 23
3.2.3代理 25
3.3变量 29
3.3.1命名变量 29
3.3.2变量的类型 30
3.4常量 31
3.5泛型 31
3.5.1泛型的定义 32
3.5.2泛型的引用 33
3.5.3常用的泛型集合 33
3.6小结 36
第4章 类型转换 39
4.1隐式类型转换 39
4.1.1隐式数值转换 39
4.1.2隐式枚举转换 41
4.1.3隐式引用转换 41
4.2显式类型转换 44
4.2.1显式数值转换 44
4.2.2显式枚举转换 45
4.2.3显式引用转换 46
4.3小结 47
第5章 表达式 49
5.1操作符 49
5.1.1操作符的分类 49
5.1.2操作符的优先级 49
5.2算术操作符和算术表达式 50
5.2.1加法运算 51
5.2.2减法运算 53
5.2.3乘法运算 54
5.2.4除法运算 54
5.2.5求余运算 55
5.3赋值操作符和赋值表达式 55
5.3.1简单赋值 55
5.3.2复合赋值 56
5.4关系操作符和关系表达式 56
5.4.1比较运算 56
5.4.2 is操作符 57
5.4.3 as操作符 58
5.4.4关系表达式 59
5.5逻辑操作符和逻辑表达式 59
5.5.1逻辑操作符 59
5.5.2逻辑表达式 59
5.6位运算 60
5.7其他特殊操作符 63
5.7.1三元操作符 63
5.7.2自增和自减操作符 63
5.7.3 new操作符 64
5.7.4 typeof操作符 65
5.8小结 65
第6章 流程控制 67
6.1条件分支语句 67
6.1.1 if语句 67
6.1.2 switch语句 69
6.2循环语句 71
6.2.1 for语句 72
6.2.2 foreach语句 73
6.2.3 while语句 75
6.2.4 do-while语句 76
6.3跳转语句 77
6.3.1 break语句 78
6.3.2 continue语句 78
6.3.3 goto语句 78
6.3.4 return语句 79
6.4循环与跳转综合举例 79
6.5异常处理 81
6.5.1 try-catch语句 81
6.5.2 try-catch-finally语句 82
6.5.3 throw语句 83
6.6小结 85
第7章 面向对象的程序设计 87
7.1面向对象的基本概念 87
7.1.1面向对象技术的由来 87
7.1.2基本概念 88
7.2类 88
7.2.1类的申明 88
7.2.2类的成员 89
7.2.3构造函数和析构函数 93
7.2.4属性 96
7.3常用类操作和数据处理 99
7.3.1 Convert类 99
7.3.2 String类 99
7.3.3 StringBuilder类 105
7.3.4 DateTime类和TimeSpan类 107
7.3.5 Math类 110
7.3.6 Random类 110
7.4小结 112
第8章 方法 113
8.1方法的申明 113
8.2方法中的参数 114
8.2.1值参数 114
8.2.2引用型参数 115
8.2.3输出参数 116
8.2.4数组型参数 117
8.3静态和非静态的方法 118
8.4方法的重载 120
8.5操作符重载 124
8.5.1问题的提出 124
8.5.2使用成员方法重载操作符 125
8.6小结 128
第9章 继承 130
9.1 C#的继承机制 130
9.1.1概述 130
9.1.2覆盖 132
9.1.3索引指示器 133
9.1.4 base保留字 134
9.2多态性 135
9.2.1 C#中的多态性 135
9.2.2虚方法 135
9.2.3在派生类中对虚方法进行重载 136
9.3抽象与密封 139
9.3.1抽象类 139
9.3.2抽象方法 142
9.3.3密封类 144
9.3.4密封方法 145
9.4继承中关于属性的一些问题 146
9.5小结 149
第10章 接口 152
10.1组件编程技术 152
10.2接口定义 153
10.2.1申明 153
10.2.2接口成员的定义 153
10.2.3对接口成员的访问 154
10.2.4接口成员的全权名 156
10.3接口的实现 157
10.3.1类对接口的实现 157
10.3.2显式接口成员执行体 159
10.4接口实现的继承机制 161
10.4.1接口的继承 161
10.4.2接口的重实现 164
10.5抽象类与接口 166
10.6应用接口示例 167
10.7小结 168
第11章 线程 171
11.1创建并启动线程 171
11.1.1创建线程 171
11.1.2启动线程 174
11.2控制线程的执行 176
11.2.1挂起线程 176
11.2.2恢复线程 176
11.2.3终止线程 176
11.2.4设置线程的优先级 178
11.3线程间的同步 180
11.4线程使用示例 182
11.5小结 185
第12章 文件和流 187
12.1用流读写文件 187
12.1.1 FileStream类读写字节 187
12.1.2 BinaryReader、 BinaryWriter类读写基本数据类型 190
12.1.3 StreamReader和StreamWriter类读写字符串 191
12.1.4序列化 194
12.1.5 Stream类的其他派生类 197
12.2 File类和FileInfo类 197
12.2.1 File类常用的方法 198
12.2.2判断文件是否存在 199
12.2.3删除文件 199
12.2.4复制文件 200
12.2.5移动文件 201
12.2.6设置文件属性 202
12.2.7获取文件的属性 202
12.3 Directory类和DirectoryInfo类 204
12.3.1 Directory类常用的方法 204
12.3.2判断目录是否存在 204
12.3.3创建目录 205
12.3.4删除目录 205
12.3.5移动目录 206
12.3.6获取目录下所有子目录 207
12.3.7获取目录下的所有文件 208
12.3.8设置目录属性 209
12.4文件读写示例 210
12.4.1文本文件的读写 210
12.4.2二进制文件的读写 211
12.4.3拆分和合并文件 213
12.5小结 215
参考文献 216