C#图解教程 第5版pdf下载

C#图解教程 第5版百度网盘pdf下载

作者:
简介:C#图解教程 第5版
出版社:
出版时间:2019-11
pdf下载价格:9.00¥


预览


内容介绍

作  者:(美)丹尼尔·索利斯(Daniel Solis),(美)卡尔·施罗坦博尔(Cal Schrotenboer) 著 窦衍森 等 译
定  价:129
出 版 社:人民邮电出版社
出版日期:2019年11月01日
页  数:570
装  帧:平装
ISBN:9787115519184
章C#和.NET框架1
1.1在.NET之前1
1.1.120世纪90年代末的Windows编程1
1.1.2下一代平台服务的目标2
1.2.NET时代2
1.2.1.NET框架的组成2
1.2.2大大改进的编程环境3
1.3编译成CIL5
1.4编译成本机代码并执行6
1.5CLR7
1.6CLI8
1.7各种缩写9
1.8C#的演化9
1.9C#和Windows的演化10
第2章C#和.NETCore11
2.1.NET框架的背景11
2.2为什么选择.NETCore(和Xamarin)11
2.3.NETCore的目标12
2.4多平台支持13
2.5快速发展和升级13
2.6程序占用空间小、部署简单、版本问题少13
2.7开源社区支持14
2.8改进的应用程序性能14
2.9全新的开始14
2.10.NETCore的发展15
2.11.NET框架的未来15
2.12Xamarin的适用之处15
第3章C#编程概述16
3.1一个简单的C#程序16
3.2标识符18
3.3关键字18
3.4Main:程序的起始点19
3.5空白19
3.6语句20
3.7从程序中输出文本21
3.7.1Write21
3.7.2WriteLine21
3.7.3格式字符串22
3.7.4多重标记和值23
3.7.5格式化数字字符串24
3.8注释:为代码添加注解28
3.8.1关于注释的更多内容28
3.8.2文档注释29
3.8.3注释类型总结29
第4章类型、存储和变量30
4.1C#程序是一组类型声明30
4.2类型是一种模板31
4.3实例化类型31
4.4数据成员和函数成员32
4.5预定义类型33
4.6用户定义类型34
4.7栈和堆35
4.7.1栈35
4.7.2堆36
4.8值类型和引用类型37
4.8.1存储引用类型对象的成员38
4.8.2C#类型的分类38
4.9变量39
4.9.1变量声明39
4.9.2多变量声明41
4.9.3使用变量的值41
4.10静态类型和dynamic关键字41
4.11可空类型42
第5章类的基本概念43
5.1类的概述43
5.2程序和类:一个简单的示例44
5.3声明类45
5.4类成员45
5.4.1字段45
5.4.2方法47
5.5创建变量和类的实例48
5.6为数据分配内存48
5.7实例成员49
5.8访问修饰符50
5.9从类的内部访问成员52
5.10从类的外部访问成员53
5.11综合应用54
第6章方法56
6.1方法的结构56
6.2方法体内部的代码执行57
6.3局部变量58
6.3.1类型推断和var关键字59
6.3.2嵌套块中的局部变量59
6.4局部常量60
6.5控制流61
6.6方法调用62
6.7返回值63
6.8返回语句和void方法
6.9局部函数66
6.10参数66
6.10.1形参67
6.10.2实参67
6.11值参数69
6.12引用参数71
6.13引用类型作为值参数和引用参数73
6.14输出参数76
6.15参数数组79
6.15.1方法调用80
6.15.2将数组作为实参82
6.16参数类型总结83
6.17ref局部变量和ref返回83
6.18方法重载86
6.19命名参数87
6.20可选参数88
6.21栈帧91
6.22递归93
第7章深入理解类95
7.1类成员95
7.2成员修饰符的顺序96
7.3实例类成员97
7.4静态字段98
7.5从类的外部访问静态成员98
7.5.1静态字段示例99
7.5.2静态成员的生存期100
7.6静态函数成员101
7.7其他静态类成员类型102
7.8成员常量102
7.9常量与静态量103
7.10属性103
7.10.1属性声明和访问器104
7.10.2属性示例105
7.10.3使用属性106
7.10.4属性和关联字段106
7.10.5执行其他计算107
7.10.6只读和只写属性108
7.10.7属性与公有字段109
7.10.8计算只读属性示例109
7.10.9自动实现属性110
7.10.10静态属性111
7.11实例构造函数112
7.11.1带参数的构造函数113
7.11.2默认构造函数114
7.12静态构造函数114
7.13对象初始化语句116
7.14析构函数117
7.15readonly修饰符117
7.16this关键字118
7.17索引器119
7.17.1什么是索引器120
7.17.2索引器和属性120
7.17.3声明索引器121
7.17.4索引器的set访问器122
7.17.5索引器的get访问器122
7.17.6关于索引器的更多内容123
7.17.7为Employee示例声明索引器123
7.17.8另一个索引器示例124
7.17.9索引器重载125
7.18访问器的访问修饰符126
7.19分部类和分部类型127
7.20分部方法128
第8章类和继承130
8.1类继承130
8.2访问继承的成员131
8.3所有类都派生自object类132
8.4屏蔽基类的成员133
8.5基类访问135
8.6使用基类的引用135
8.6.1虚方法和覆写方法137
8.6.2覆写标记为override的方法139
8.6.3覆盖其他成员类型142
8.7构造函数的执行142
8.7.1构造函数初始化语句144
8.7.2类访问修饰符145
8.8程序集间的继承146
8.9成员访问修饰符148
8.9.1访问成员的区域149
8.9.2公有成员的可访问性150
8.9.3私有成员的可访问性150
8.9.4受保护成员的可访问性150
8.9.5内部成员的可访问性151
8.9.6受保护内部成员的可访问性151
8.9.7成员访问修饰符小结152
8.10抽象成员153
8.11抽象类154
8.11.1抽象类和抽象方法的示例154
8.11.2抽象类的另一个例子155
8.12密封类156
8.13静态类156
8.14扩展方法157
8.15命名约定160
第9章表达式和运算符162
9.1表达式162
9.2字面量163
9.2.1整数字面量1
9.2.2实数字面量165
9.2.3字符字面量166
9.2.4字符串字面量167
9.3求值顺序168
9.3.1优先级168
9.3.2结合性169
9.4简单算术运算符170
9.5求余运算符170
9.6关系比较运算符和相等比较运算符171
9.7递增运算符和递减运算符173
9.8条件逻辑运算符174
9.9逻辑运算符175
9.10移位运算符176
9.11赋值运算符178
9.12条件运算符179
9.13一元算术运算符181
9.14用户定义的类型转换181
9.15运算符重载184
9.15.1运算符重载的示例185
9.15.2运算符重载的186
9.16typeof运算符189
9.17nameof运算符190
9.18其他运算符191
0章语句192
10.1什么是语句192
10.2表达式语句193
10.3控制流语句194
10.4if语句194
10.5ifelse语句195
10.6while循环196
10.7do循环197
10.8for循环198
10.8.1for语句中变量的作用域200
10.8.2初始化和迭代表达式中的多表达式200
10.9switch语句201
10.9.1分支示例203
10.9.2其他类型的模式表达式203
10.9.3switch语句的补充205
10.9.4分支标签206
10.10跳转语句207
10.11break语句207
10.12continue语句208
10.13标签语句209
10.13.1标签209
10.13.2标签语句的作用域209
10.14goto语句210
10.15using语句211
10.15.1包装资源的使用212
10.15.2using语句的示例212
10.15.3多个资源和嵌套213
10.15.4using语句的另一种形式214
10.16其他语句215
1章结构216
11.1什么是结构216
11.2结构是值类型217
11.3对结构赋值218
11.4构造函数和析构函数219
11.4.1实例构造函数219
11.4.2静态构造函数220
11.4.3构造函数和析构函数小结221
11.5属性和字段初始化语句221
11.6结构是密封的221
11.7装箱和拆箱222
11.8结构作为返回值和参数222
11.9关于结构的更多内容222
2章枚举223
12.1枚举223
12.1.1设置底层类型和显式值225
12.1.2隐式成员编号225
12.2位标志226
12.2.1Flags特性229
12.2.2使用位标志的示例230
12.3关于枚举的更多内容231
3章数组234
13.1数组234
13.1.1定义234
13.1.2重要细节235
13.2数组的类型235
13.3数组是对象236
13.4一维数组和矩形数组237
13.5实例化一维数组或矩形数组238
13.6访问数组元素238
13.7初始化数组239
13.7.1显式初始化一维数组240
13.7.2显式初始化矩形数组240
13.7.3初始化矩形数组的语法点241
13.7.4快捷语法241
13.7.5隐式类型数组241
13.7.6综合内容242
13.8交错数组242
13.8.1声明交错数组243
13.8.2快捷实例化243
13.8.3实例化交错数组244
13.8.4交错数组中的子数组245
13.9比较矩形数组和交错数组246
13.10foreach语句247
13.10.1迭代变量是只读的248
13.10.2foreach语句和多维数组249
13.11数组协变250
13.12数组继承的有用成员251
13.13比较数组类型254
13.14数组与ref返回和ref局部变量255
4章委托256
14.1什么是委托256
14.2委托概述258
14.3声明委托类型259
14.4创建委托对象260
14.5给委托赋值261
14.6组合委托262
14.7为委托添加方法262
14.8从委托移除方法263
14.9调用委托263
14.10委托的示例2
14.11调用带返回值的委托265
14.12调用带引用参数的委托266
14.13匿名方法267
14.13.1使用匿名方法268
14.13.2匿名方法的语法268
14.13.3变量和参数的作用域270
14.14Lambda表达式271
5章事件274
15.1发布者和订阅者274
15.2源代码组件概览276
15.3声明事件276
15.4订阅事件277
15.5触发事件278
15.6标准事件的用法280
15.6.1通过扩展EventArgs来传递数据281
15.6.2移除事件处理程序283
15.7事件访问器284
6章接口286
16.1什么是接口286
16.2声明接口291
16.3实现接口292
16.4接口是引用类型294
16.5接口和as运算符295
16.6实现多个接口295
16.7实现具有重复成员的接口296
16.8多个接口的引用298
16.9派生成员作为实现299
16.10显式接口成员实现300
16.11接口可以继承接口302
16.12不同类实现一个接口的示例303
7章转换305
17.1什么是转换305
17.2隐式转换306
17.3显式转换和强制转换307
17.4转换的类型308
17.5数字的转换309
17.5.1隐式数字转换309
17.5.2溢出检测上下文310
17.5.3显式数字转换311
17.6引用转换315
17.6.1隐式引用转换316
17.6.2显式引用转换317
17.6.3有效显式引用转换318
17.7装箱转换318
17.7.1装箱是创建副本319
17.7.2装箱转换320
17.8拆箱转换320
17.9用户自定义转换321
17.9.1用户自定义转换的约束322
17.9.2用户自定义转换的示例322
17.9.3评估用户自定义转换323
17.9.4多步用户自定义转换的示例324
17.10is运算符325
17.11as运算符326
8章泛型327
18.1什么是泛型327
18.2C#中的泛型329
18.3泛型类330
18.3.1声明泛型类331
18.3.2创建构造类型331
18.3.3创建变量和实例332
18.3.4使用泛型的栈的示例333
18.3.5比较泛型和非泛型栈334
18.4类型参数的约束335
18.4.1Where子句336
18.4.2约束类型和次序337
18.5泛型方法337
18.5.1声明泛型方法338
18.5.2调用泛型方法338
18.5.3泛型方法的示例339
18.6扩展方法和泛型类340
18.7泛型结构341
18.8泛型委托342
18.9泛型接口344
18.9.1使用泛型接口的示例345
18.9.2泛型接口的实现必须345
18.10协变和逆变346
18.10.1协变346
18.10.2逆变349
18.10.3协变和逆变的不同350
18.10.4接口的协变和逆变351
18.10.5关于可变性的更多内容352
9章枚举器和迭代器354
19.1枚举器和可枚举类型354
19.2IEnumerator接口356
19.3IEnumerable接口358
19.4泛型枚举接口360
19.5迭代器362
19.5.1迭代器块362
19.5.2使用迭代器来创建枚举器363
19.5.3使用迭代器来创建可枚举类型365
19.6常见迭代器模式366
19.7产生多个可枚举类型367
19.8将迭代器作为属性368
19.9迭代器的实质369
第20章LINQ371
20.1什么是LINQ371
20.2LINQ提供程序372
20.3方法语法和查询语法374
20.4查询变量375
20.5查询表达式的结构376
20.5.1from子句377
20.5.2join子句378
20.5.3什么是联结379
20.5.4查询主体中的fromletwhere片段381
20.5.5orderby子句384
20.5.6selectgroup子句385
20.5.7查询中的匿名类型386
20.5.8group子句387
20.5.9查询延续:into子句388
20.6标准查询运算符389
20.6.1标准查询运算符的签名392
20.6.2查询表达式和标准查询运算符393
20.6.3将委托作为参数394
20.6.4LINQ预定义的委托类型395
20.6.5使用委托参数的示例396
20.6.6使用Lambda表达式参数的示例397
20.7LINQtoXML398
20.7.1标记语言398
20.7.2XML基础398
20.7.3XML类400
20.7.4使用XML特性406
20.7.5其他类型的节点408
20.7.6使用LINQtoXML的LINQ查询409
第21章异步编程412
21.1什么是异步412
21.2async/await特性的结构416
21.3什么是异步方法417
21.3.1异步方法的控制流421
21.3.2取消一个异步操作427
21.3.3在调用方法中同步地等待任务430
21.3.4在异步方法中异步地等待任务433
21.3.5Task.Delay方法435
21.4GUI程序中的异步操作436
21.5使用异步Lambda表达式440
21.6完整的GUI程序441
21.7BackgroundWorker类443
21.8并行循环447
21.9其他异步编程模式450
21.10BeginInvoke和EndInvoke451
21.10.1等待直到完成模式452
21.10.2AsyncResult类453
21.10.3轮询模式454
21.10.4回调模式455
21.11计时器458
第22章命名空间和程序集460
22.1引用其他程序集460
22.2命名空间4
22.2.1命名空间名称467
22.2.2命名空间的补充467
22.2.3命名空间跨文件伸展468
22.2.4嵌套命名空间469
22.3using指令470
22.3.1using命名空间指令470
22.3.2using别名指令471
22.3.3usingstatic指令471
22.4程序集的结构472
22.5程序集标识符473
22.6强命名程序集474
22.7私有程序集的部署475
22.8共享程序集和GAC476
22.8.1把程序集安装到GAC476
22.8.2GAC内的并肩执行477
22.9配置文件477
22.10延迟签名478
第23章异常480
23.1什么是异常480
23.2try语句481
23.3异常类482
23.4catch子句483
23.5异常过滤器485
23.6catch子句段485
23.7finally块486
23.8为异常寻找处理程序487
23.9进一步搜索488
23.9.1一般法则489
23.9.2搜索调用栈的示例489
23.10抛出异常492
23.11不带异常对象的抛出493
23.12throw表达式494
第24章预处理指令495
24.1什么是预处理指令495
24.2基本规则495
24.3#define和#undef指令496
24.4条件编译497
24.5条件编译结构498
24.6诊断指令500
24.7行号指令501
24.8区域指令502
24.9#pragmawarning指令503
第25章反射和特性504
25.1元数据和反射504
25.2Type类505
25.3获取Type对象506
25.4什么是特性508
25.5应用特性509
25.6预定义的保留特性509
25.6.1Obsolete特性509
25.6.2Conditional特性510
25.6.3调用者信息特性512
25.6.4DebuggerStepThrough特性513
25.6.5其他预定义特性514
25.7关于应用特性的更多内容514
25.7.1多个特性514
25.7.2其他类型的目标515
25.7.3全局特性515
25.8自定义特性516
25.8.1声明自定义特性516
25.8.2使用特性的构造函数516
25.8.3指定构造函数517
25.8.4使用构造函数517
25.8.5构造函数中的位置参数和命名参数518
25.8.6特性的使用518
25.8.7自定义特性的佳实践520
25.9访问特性520
25.9.1使用IsDefined方法520
25.9.2使用GetCustomAttributes方法521
第26章C#6.0和C#7.0新增的内容523
26.1新增内容概述524
26.2字符串插值(C#6.0)524
26.3自动属性初始化语句525
26.4只读自动属性(C#6.0)526
26.5表达式函数体成员(C#6.0和C#7.0)526
26.6usingstatic(C#6.0)527
26.7空条件运算符(C#6.0)528
26.8在catch和finally块中使用await(C#6.0)528
26.9nameof运算符(C#6.0)529
26.10异常过滤器(C#6.0)529
26.11索引初始化语句(C#6.0)530
26.12集合初始化语句的扩展方法(C#6.0)532
26.13改进的重载决策(C#6.0)533
26.14值元组(C#7.0)534
26.15is模式匹配(C#7.0)534
26.16switch模式匹配(C#7.0)536
26.17自定义析构函数(C#7.0)538
26.18二进制字面量和数字分隔符(C#7.0)540
26.19out变量(C#7.0)541
26.20局部函数(C#7.0)542
26.21ref局部变量(ref变量)和ref返回(C#7.0)544
26.22表达式函数体成员的扩展(C#7.0)544
26.23throw表达式(C#7.0)545
26.24扩展的async返回类型(C#7.0)545
第27章其他主题546
27.1概述546
27.2字符串546
27.3StringBuilder类548
27.4把字符串解析为数据值549
27.5关于可空类型的更多内容550
27.5.1为可空类型赋值552
27.5.2使用空接合运算符552
27.5.3空条件运算符553
27.5.4使用可空用户定义类型555
27.6Main方法556
27.7文档注释558
27.7.1插入文档注释558
27.7.2使用其他XML标签559
27.8嵌套类型559
27.8.1嵌套类的示例560
27.8.2可见性和嵌套类型561
27.9析构函数和dise模式563
27.9.1标准dise模式5
27.9.2比较构造函数和析构函数566
27.10Tuple和ValueTuple566
27.11和COM的互操作568
本书是广受赞誉的《C#图解教程》的新版本。作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式、朴实简洁的文字,并辅以大量表格和代码示例,全面、直观地阐述了C#语言的各种特性。新版本除了精心修订旧版内容外,还全面涵盖了C#6.0和C#7.0的新增特性,比如局部函数、throw表达式、nameof和空条件运算符、usingstatic指令、异常过滤器,等等。通过本书,读者能够快速、深入地理解C#,为自己的编程生涯打下良好的基础。