明明白白学C#大学霸内部资料
明明白白学C#大学霸内部资料
买教程送邮件答疑
教程版权归大学霸所有
教程为彩色
由于教程有水印,影响二次销售,不接受退款
为防盗版,教程每页都会添加水印,水印默认为购买者的账号名+电话
购买时,请QQ联系,确定收货地址、付款方式等
目 录
上册目 录
第0章 准备工作 1
0.1 C#是什么 1
0.1.1 什么是语言 1
0.1.2 什么是编程语言 2
0.1.3 编程语言的分类 2
0.1.4 什么是C#编程语言 3
0.2 C#可以做什么 3
0.2.1 开发普通软件 4
0.2.2 开发网站 4
0.2.3 开发游戏——Unity 5
0.2.4 开发iOS/Android/Window Phone手机应用App 5
0.3 如何学习C# 6
0.3.1 搭建开发环境 6
0.3.2 建立第一个程序——Hello World 8
0.3.3 重要术语回顾 12
0.3.3 后续学习的路 12
第1章 数据表示 13
1.1 数据的直观表示——字面量 13
1.1.1 整型字面量 13
1.1.2 浮点型字面量 15
1.2 文本字面量 15
1.2.1 字符和字符串的写作规范 15
1.2.2 特殊的字符和字符串——转义字符 16
1.2.3 更全面的表达方式——ASCII表 17
1.2.4 避免转义字符——@ 18
1.2.5 字符串长度 18
1.3 数据的指代表示——变量 19
1.3.1 为什么使用指代表示 19
1.3.2 C#的命名规范 20
1.3.3 对变量命名 21
1.4 数据类型 22
1.4.1 数值类型 22
1.4.2 文本类型 23
1.4.3 其他类型 24
1.5 定义一个变量 24
1.6 一种特殊的变量——常量 24
1.7 小结 25
第2章 变量和数值关联 26
2.1 赋值 26
2.1.1 静态赋值——固定值 26
2.1.2 动态赋值——可变值 26
2.2 验证变量与数值的关联 27
2.2.1 验证的手段 27
2.2.2 验证整数赋值 29
2.2.3 验证实数赋值 30
2.2.4 验证文本赋值 32
2.3 总结数据转换规律 33
2.3.1 自动转换 33
2.3.2 强制转换 35
2.4 小结 36
第3章 运算——运算符与表达式 37
3.1 表达式 37
3.2 简单赋值运算符 38
3.3 算术运算符 38
3.3.1 写作规范 38
3.3.2 算术运算符 39
3.3.3 算术运算中的特殊情况 40
3.4 特殊的算术运算符 42
3.4.1 操作数为1的特殊运算——自增自减运算 42
3.4.2 操作数为2的特殊运算——移位运算 45
3.4.3 位逻辑运算符 47
3.4.4 复合的赋值运算符 50
3.5 其他运算符 52
3.6 运算符的优先级和结合顺序 52
3.6.1 运算符的优先级 52
3.6.2 结合顺序 54
3.7 小结 54
第4章 语句和语句块 55
4.1 语句 55
4.1.1 如何构成语句 55
4.1.2 语句的种类 56
4.1.3 特殊的语句 58
4.2 语句块的构成与作用 59
4.2.1 语句块的构成 59
4.2.2 使用语句块的好处 61
4.2.3 局部变量 61
4.3 语句的执行顺序 62
4.3.1 顺序执行的执行过程 62
4.3.2 单步调试 63
4.4 选择执行 66
4.4.1 选择执行的依据——条件 66
4.4.2 单值条件表达式 66
4.4.3 双值条件表达式 67
4.4.4 多条件表达式 68
4.5 选择执行的种类 70
4.5.1 单选择if 70
4.5.2 双选择if…else 72
4.5.3 多选择if…else…if 73
4.5.4 switch语句 75
4.6 循环执行 80
4.6.1 为什么要使用循环 80
4.6.2 当型循环while 81
4.6.3 直到型循环 83
4.6.4 更安全的循环——for循环 85
4.7 跳转语句 86
4.7.1 continue语句只适用于循环 87
4.7.2 break语句可用于任何封闭的代码 89
4.8 多层嵌套语句 90
4.8.1 选择语句嵌套 90
4.8.2 循环语句嵌套 92
4.8.3 深层嵌套可以使用goto语句 93
4.9 局部变量 94
4.9.1 局部变量的声明 95
4.9.2 局部变量的作用域和生存周期 96
4.9 小结 97
第5章 函数 98
5.1 为什么有函数 98
5.1.1 拆分代码 98
5.1.2 简化代码 101
5.2 函数的组成 103
5.2.1 语句块标识——函数名 103
5.2.2 语句块构成——函数体 104
5.2.3 语句块结果——返回值 104
5.2.4 定义一个函数 107
5.3 函数的使用 108
5.4 函数通用化——参数 110
5.4.1 为什么有参数 110
5.4.2 普通参数——传值 113
5.4.3 引用传递 115
5.4.4 传出参数 117
5.5 特殊的函数 119
5.5.1 Main()函数 119
5.5.2 函数的重载 121
5.6 可供多个函数调用的变量 123
5.7 复杂的函数调用 124
5.6.1 递归调用 124
5.6.2 嵌套调用 127
5.8 小结 128
第6章 “类” 129
6.1 为什么需要类 129
6.1.1 简洁代码 129
6.1.2 大项目的分工合作的问题 132
6.1.3 标识符命名的问题 133
6.2 如何划分类 134
6.3 如何定义类 136
6.3.1 代码段标识——类名 137
6.3.2 代码段——类体 138
6.3.3 定义一个类 139
6.3.4 Main()的归属地 140
6.4 类的使用 140
6.4.1 调用类自身的成员 140
6.4.2 调用另一个类的成员 143
6.5 类之间的成员访问——访问修饰符 144
6.5.1 只有自己能访问——私有 144
6.5.2 谁都能访问——公有 145
6.5.3 为类定义可访问性 146
6.6 特殊的类的定义——嵌套类 151
6.6.1 嵌套类的定义和使用方法 151
6.6.2 嵌套类的访问权限 154
6.6.3 总结 156
6.7 小结 156
下册目录
第7章 对象 1
7.1 为什么要使用对象 1
7.2 如何定义对象 4
7.2.1 为对象命名 4
7.2.2 定义一个对象 5
7.2.3 对象和类的区别 5
7.3 程序中成员的归属 6
7.3.1 字段的归属 6
7.3.2 方法的归属 7
7.4 如何使用对象 8
7.4.1 使用对象操作字段 8
7.4.2 使用对象操作方法 9
7.4.3 特殊的对象指代——this 10
7.5 特殊的类方法 12
7.5.1 构造方法 12
7.5.2 析构方法 19
7.5.3 比较构造方法与析构方法 20
7.6 小结 20
第8章 属性 21
8.1 属性的由来 21
8.2 属性的构成 23
8.2.1 属性的命名 23
8.2.2 属性的类型和访问修饰符 24
8.2.3 属性的机制 24
8.2.4 定义一个属性 26
8.3 属性的应用 27
8.3.1 判断赋值正确性 27
8.3.2 只读/只写属性 29
8.3.3 方便代码后期维护 31
8.3.4 同步处理相关字段 33
8.3.5 自动实现属性 34
8.3.6 属性不绑定字段 36
8.4 小结 37
第9章 继承 38
9.1 继承的由来 38
9.1.1 代码重用、简化代码 38
9.1.2 扩展功能 40
9.1.3 继承的定义格式 42
9.2 介于private与public之间的访问权限——protected 43
9.3 子类从父类得到了什么 45
9.3.1 字段的可继承性 45
9.3.2 方法的可继承性 48
9.3.3 属性的可继承性 52
9.3.4 父类的静态成员 56
9.4 子类从父类得不到构造方法和析构方法 57
9.4.1 子类不能继承构造方法 57
9.4.2 隐式调用基类构造方法 58
9.4.3 显式调用基类构造方法 59
9.4.4 建议为基类声明无参构造方法 62
9.4.5 析构方法 63
9.5 继承的特点 63
9.5.1 单继承 64
9.5.2 可传递 65
9.5.3 可添、不可删 66
9.6 继承的面向对象特性——重写 66
9.6.1 类的虚拟成员 66
9.6.2 重写虚成员 73
9.6.3 比较方法的重载、重写与隐藏 76
9.7 小结 77
第10章 C#的特殊成员 78
10.1 继承链引发的问题 78
10.2 虚方法在继承链中的作用 80
10.2.1 想方设法解决继承链引发的问题 81
10.2.2 密封方法——取消成员的虚效果 84
10.2.3 密封类 87
10.3 继承中父类对子类添加限制 89
10.3.1 部分限制——抽象方法 89
10.3.2 限制升级——抽象类 92
10.3.3 使用抽象类 94
10.3.4 抽象类总结 97
10.4 抽象类的升级——接口 98
10.4.1 为什么要使用接口 98
10.4.2 接口的定义 98
10.4.3 接口的实现——接口继承接口 101
10.4.4 接口的实现——类继承接口 103
10.4.5 比较接口和抽象类 109
10.5 继承中的特殊情况——运算符重载 110
10.5.1 为什么重载运算符 110
10.5.2 如何重载运算符 110
10.5.3 一元运算符的重载 111
10.5.4 二元运算符的重载 115
10.5.5 转换运算符的重载 121
10.5.6 不能重载的运算符 124
10.6 小结 126
第11章 委托和事件 127
11.1 为什么使用委托 127
11.2 委托的声明和使用 128
11.2.1 声明委托 128
11.2.2 创建委托对象 130
11.2.3 向委托注册方法 131
11.2.4 使用委托 133
11.2.5 匿名方法 135
11.3 委托的合并与拆分 138
11.3.1 合并委托 139
11.3.2 合并委托的条件 144
11.3.3 拆分委托 146
11.4 委托的特殊使用——用于回调方法 147
11.5 匹配不精准——委托协变和逆变 148
11.6 一种特殊的委托——事件 152
11.6.1 事件的声明 152
11.6.2 订阅事件与取消订阅事件 153
11.6.3 引发事件 155
11.6.4 使用事件 156
11.7 小结 161
第12章 特殊的系统类——数组和字符串 162
12.1 如何定义数组 162
12.1.1 初识数组 162
12.1.2 Array类 163
12.1.3 定义一个数组 164
12.1.4 初始化数组 166
12.1.5 遍历数组 172
12.2 数组有哪些类型 176
12.2.1 一维数组 176
12.2.2 二维数组 176
12.2.3 多维数组 181
12.2.4 交错数组 183
12.3 数组的特殊使用 193
12.3.1 作为参数 193
12.3.2 作为返回值 201
12.4 静态数组 203
12.4.1 静态数组的常用属性概览 204
12.4.2 静态数组的常用方法概览 204
12.4.3 获取数组的秩 205
12.4.4 获取数组长度 206
12.4.5 获取元素的索引 212
12.4.6 获取或设置元素的值 214
12.4.7 清除数组元素 216
12.4.8 复制数组 218
12.4.9 复制数组元素 220
12.4.10 反转数组元素 223
12.4.11 对数组排序 225
12.5 动态数组 226
12.5.1 如何定义一个动态数组 227
12.5.2 常用属性和方法 227
12.5.3 如何添加、删除元素 228
12.5.4 清空数组 234
12.6 字符串的本质——String对象 235
12.6.1 了解String类 235
12.6.2 String类提供的字段、属性和方法 236
12.6.3 获取字符串长度 237
12.6.4 插入字符串 238
12.6.5 移除字符串 239
12.6.6 替换字符串 240
12.6.7 连接字符串 241
12.6.8 获取子串 244
12.6.9 格式化字符串 245
12.7 可变字符串 251
12.7.1 了解StringBuilder类 251
12.7.2 StringBuilder类提供的属性和方法 252
12.7.3 插入字符串 253
12.7.4 追加字符串 254
12.7.5 移除字符串 256
12.9 小结 257
第13章 结构和枚举 258
13.1 认识结构 258
13.1.1 为什么要用结构 258
13.1.2 如何定义结构 259
13.1.3 结构可以包含的成员 261
13.1.4 如何使用结构 264
13.2 结构的继承特性 266
13.3 结构和类的区别 269
13.4 枚举 272
13.4.1 为什么要使用枚举 272
13.4.2 定义枚举 273
13.4.3 如何使用枚举 275
13.4.4 枚举的基类Enum 277
13.4.5 枚举的分类 280
13.5 使用枚举需要注意一些问题 282
13.5.1 尽量不给枚举元素提供显式的值 283
13.5.2 尽量使得零是枚举的有效值 283
13.6 小结 286
第14章 索引器 287
14.1 数组的启发 287
14.1.1 只关注值 287
14.1.2 批量处理 288
14.2 构建简单索引器 290
14.2.1 为什么要使用索引器 290
14.2.2 索引器的构成 291
14.2.3 数组字段应用 294
14.2.4 非数组字段应用 296
14.3 构建复杂索引器 299
14.3.1 字符串索引 300
14.3.2 多维索引器 302
14.3.3 设定索引器的上下限 305
14.4 索引器的扩展应用 308
14.4.1 索引器的重载 309
14.4.2 接口索引器 311
14.4.3 索引器在继承中的应用 318
14.5 索引器对比 322
14.5.1 索引器VS数组 323
14.5.2 索引器VS属性 323
14.5 小结 323
Comments are closed.