图书介绍

C本质论 第3版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

C本质论 第3版
  • (美)米凯利斯(Michaelis·) 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:9787115233837
  • 出版时间:2010
  • 标注页数:694页
  • 文件大小:143MB
  • 文件页数:721页
  • 主题词:C语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

C本质论 第3版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 C#概述1

1.1 Hello,World1

1.2 C#语法基础3

1.2.1 C#关键字3

1.2.2 类型定义5

1.2.3 Main5

1.2.4 语句和语句分隔符7

1.2.5 空白7

1.3 使用变量8

1.3.1 数据类型9

1.3.2 变量的声明9

1.3.3 变量的赋值10

1.3.4 变量的使用11

1.4 控制台输入和输出11

1.4.1 从控制台获取输入11

1.4.2 将输出写入控制台13

1.5 注释14

1.6 托管执行和公共语言基础结构16

1.7 C#和.NET版本18

1.8 CIL和ILDASM18

1.9 小结21

第2章 数据类型22

2.1 基本数值类型22

2.1.1 整数类型22

2.1.2 浮点类型23

2.1.3 decimal类型24

2.1.4 字面值24

2.2 更多基本类型28

2.2.1 布尔类型28

2.2.2 字符类型28

2.2.3 字符串30

2.3 null和void36

2.3.1 null36

2.3.2 void36

2.4 类型的分类38

2.4.1 值类型38

2.4.2 引用类型39

2.5 可空修饰符40

2.6 数据类型之间的转换41

2.6.1 显式转型41

2.6.2 隐式转型43

2.6.3 不进行转型的类型转换44

2.7 数组45

2.7.1 数组的声明46

2.7.2 数组的实例化和赋值46

2.7.3 数组的使用50

2.7.4 字符串作为数组使用54

2.7.5 常见错误56

2.8 小结57

第3章 运算符和控制流58

3.1 运算符58

3.1.1 一元运算符正和负59

3.1.2 二元算术运算符59

3.1.3 圆括号运算符65

3.1.4 赋值运算符65

3.1.5 递增和递减运算符66

3.1.6 常量表达式68

3.2 流控制概述69

3.2.1 if语句71

3.2.2 嵌套if71

3.3 代码块73

3.4 作用域和声明空间75

3.5 布尔表达式76

3.5.1 关系运算符和相等性运算符77

3.5.2 逻辑布尔运算符78

3.5.3 逻辑求反运算符79

3.5.4 条件运算符79

3.5.5 空接合运算符80

3.6 按位运算符81

3.6.1 移位运算符82

3.6.2 按位运算符82

3.6.3 按位赋值运算符84

3.6.4 按位取反运算符85

3.7 控制流语句85

3.7.1 while和do/while循环85

3.7.2 for循环87

3.7.3 foreach循环89

3.7.4 switch语句92

3.8 跳转语句94

3.8.1 break语句94

3.8.2 continue语句96

3.8.3 goto语句97

3.9 C#预处理器指令99

3.9.1 排除和包含代码100

3.9.2 定义预处理器符号100

3.9.3 生成错误和警告101

3.9.4 关闭警告消息101

3.9.5 nowarn:〈warn list〉选项102

3.9.6 指定行号102

3.9.7 可视编辑器提示103

3.10 小结104

第4章 方法和参数106

4.1 方法的调用107

4.1.1 命名空间108

4.1.2 类型名称109

4.1.3 作用域110

4.1.4 方法名称110

4.1.5 参数110

4.1.6 方法返回值110

4.1.7 语句与方法调用的比较111

4.2 方法的声明111

4.2.1 参数声明113

4.2.2 方法返回值声明113

4.3 using指令114

4.4 Main()的返回值和参数117

4.5 参数120

4.5.1 值参数120

4.5.2 引用参数121

4.5.3 输出参数122

4.5.4 参数数组124

4.6 递归126

4.7 方法重载128

4.8 可选参数131

4.9 用异常实现基本错误处理134

4.9.1 捕捉错误135

4.9.2 使用throw语句报告错误141

4.10 小结143

第5章 类145

5.1 类的定义和实例化148

5.2 实例字段150

5.2.1 实例字段的声明150

5.2.2 实例字段的访问151

5.3 实例方法152

5.4 使用this关键字153

5.5 访问修饰符159

5.6 属性161

5.6.1 属性的声明162

5.6.2 自动实现的属性164

5.6.3 命名规范165

5.6.4 提供属性验证166

5.6.5 只读和只写属性167

5.6.6 为取值方法和赋值方法指定访问修饰符168

5.6.7 属性作为虚字段使用170

5.6.8 属性和方法调用不允许作为ref或out参数值使用171

5.7 构造器173

5.7.1 构造器的声明173

5.7.2 默认构造器175

5.7.3 对象初始化器175

5.7.4 构造器的重载177

5.7.5 使用this调用另个构造器178

5.8 静态成员181

5.8.1 静态字段182

5.8.2 静态方法184

5.8.3 静态构造器186

5.8.4 静态属性187

5.8.5 静态类187

5.9 扩展方法189

5.10 封装数据190

5.10.1 const190

5.10.2 readonly191

5.11 嵌套类192

5.12 分部类194

5.12.1 定义分部类194

5.12.2 分部方法195

5.13 小结197

第6章 继承198

6.1 派生198

6.1.1 基类型和派生类型之间的转型201

6.1.2 private访问修饰符202

6.1.3 protected访问修饰符203

6.1.4 扩展方法205

6.1.5 单一继承205

6.1.6 密封类207

6.2 基类的重写207

6.2.1 virtual修饰符208

6.2.2 new修饰符211

6.2.3 sealed修饰符215

6.2.4 base成员215

6.2.5 构造器216

6.3 抽象类217

6.4 所有类都从System.Object派生221

6.5 使用is运算符验证基础类型222

6.6 使用as运算符进行转换223

6.7 小结224

第7章 接口226

7.1 接口概述226

7.2 通过接口来实现多态性227

7.3 接口实现232

7.3.1 显式成员实现234

7.3.2 隐式成员实现235

7.3.3 显式接口实现与隐式接口实现的比较235

7.4 “实现类”与其接口之间的转型236

7.5 接口继承237

7.6 多接口继承239

7.7 接口上的扩展方法239

7.8 通过接口来实现多重继承241

7.9 版本控制243

7.10 接口与类的比较245

7.11 小结245

第8章 值类型246

8.1 结构246

8.1.1 struct的初始化249

8.1.2 default运算符的使用251

8.1.3 值类型的继承和接口251

8.2 装箱251

8.3 枚举257

8.3.1 枚举之间的类型兼容性259

8.3.2 枚举和字符串之间的转换260

8.3.3 枚举作为标志使用261

8.4 小结265

第9章 合式类型266

9.1 重写object的成员266

9.1.1 重写ToString()266

9.1.2 重写GetHashCode()267

9.1.3 重写Equals()269

9.1.4 相等性实现的指导原则275

9.2 运算符重载275

9.2.1 比较运算符275

9.2.2 二元运算符276

9.2.3 赋值运算符与二元运算符的结合278

9.2.4 条件逻辑运算符279

9.2.5 一元运算符279

9.2.6 转换运算符280

9.2.7 转换运算符的指导原则282

9.3 引用其他程序集282

9.3.1 更改程序集目标282

9.3.2 引用程序集283

9.3.3 类型封装283

9.4 定义命名空间285

9.5 XML注释287

9.5.1 将XML注释与代码构造关联到一起288

9.5.2 生成XML文档文件290

9.6 垃圾回收291

9.7 资源清理293

9.7.1 终结器293

9.7.2 使用using语句进行确定性终结295

9.7.3 垃圾回收和终结297

9.7.4 资源利用和终结的指导原则299

9.8 延迟初始化299

9.9 小结301

第10章 异常处理302

10.1 多异常类型302

10.2 捕捉异常303

10.3 常规catch块305

10.4 异常处理的指导原则306

10.5 定义自定义异常308

10.6 小结312

第11章 泛型313

11.1 如果C#没有泛型313

11.2 泛型类型概述318

11.2.1 泛型类的使用318

11.2.2 简单泛型类的定义320

11.2.3 泛型的优点321

11.2.4 类型参数命名的指导原则321

11.2.5 泛型接口和struct321

11.2.6 构造器和终结器的定义323

11.2.7 默认值的指定324

11.2.8 多个类型参数325

11.2.9 元数326

11.2.10 嵌套泛型类型327

11.3 约束328

11.3.1 接口约束331

11.3.2 基类约束332

11.3.3 struct/class约束332

11.3.4 多个约束333

11.3.5 构造器约束334

11.3.6 约束继承334

11.4 泛型方法339

11.4.1 类型推断340

11.4.2 约束的指定341

11.5 协变性和逆变性342

11.5.1 在C# 4.0中使用out类型参数修饰符允许协变性343

11.5.2 在C# 4.0中使用in类型参数修饰符允许逆变性345

11.5.3 数组的协变性和逆变性347

11.6 泛型的内部机制347

11.6.1 基于值类型的泛型的实例化348

11.6.2 基于引用类型的泛型实例化349

11.7 小结350

第12章 委托和Lambda表达式351

12.1 委托概述351

12.1.1 背景351

12.1.2 委托数据类型353

12.1.3 委托的内部机制355

12.1.4 委托类型的定义355

12.1.5 委托的实例化356

12.2 匿名方法361

12.3 系统定义的委托:Func〈〉363

12.4 Lambda表达式365

12.4.1 语句Lambda365

12.4.2 表达式Lambda368

12.4.3 外部变量371

12.4.4 表达式树374

12.5 小结379

第13章 事件380

13.1 使用多播委托来编码Observer模式380

13.1.1 定义订阅者方法381

13.1.2 定义发布者382

13.1.3 连接发布者和订阅者383

13.1.4 调用委托384

13.1.5 检查空值385

13.1.6 委托运算符386

13.1.7 顺序调用387

13.1.8 错误处理390

13.1.9 方法返回值和传引用392

13.2 事件393

13.2.1 事件的作用393

13.2.2 事件的声明395

13.2.3 编码规范396

13.2.4 泛型和委托397

13.2.5 自定义事件的实现400

13.3 小结401

第14章 支持标准查询运算符的集合接口402

14.1 匿名类型和隐式类型的局部变量声明403

14.1.1 匿名类型403

14.1.2 隐式类型的局部变量(var)404

14.1.3 匿名类型和隐式局部变量的更多注意事项405

14.2 集合初始化器408

14.3 是什么使类成为一个集合:IEnumerable〈T〉410

14.3.1 foreach和数组410

14.3.2 foreach和IEnumerable〈T〉411

14.3.3 foreach循环内不要修改集合415

14.4 标准查询运算符415

14.4.1 使用Where()来筛选418

14.4.2 使用Select()来投射420

14.4.3 用Count()对元素进行计数422

14.4.4 推迟执行423

14.4.5 使用orderBy()和ThenBy()来排序427

14.4.6 使用Join()来执行内部联接432

14.4.7 使用GroupBy分组结果435

14.4.8 使用GroupJoin()实现一对多关系436

14.4.9 调用SelectMany()439

14.4.10 更多标准查询运算符441

14.5 小结444

第15章 使用查询表达式的LINQ445

15.1 查询表达式概述445

15.1.1 投射447

15.1.2 筛选453

15.1.3 排序454

15.1.4 let子句454

15.1.5 分组456

15.1.6 使用into进行查询延续459

15.2 查询表达式作为方法调用461

15.3 小结462

第16章 构建自定义集合463

16.1 更多集合接口464

16.1.1 IList〈T〉与IDictionary〈TKey,TValue〉465

16.1.2 IComparable〈T〉465

16.1.3 ICollection〈T〉467

16.2 主要集合类467

16.2.1 列表集合:List〈T〉467

16.2.2 字典集合:Dictionary〈TKey,TValue〉471

16.2.3 已排序集合:SortedDicti-onary〈TKey, TValue〉和SortedList〈T〉475

16.2.4 栈集合:Stack〈T〉477

16.2.5 队列集合:Queue〈T〉477

16.2.6 链表:LinkedList〈T〉478

16.3 提供一个索引运算符479

16.4 返回Null或者空集合482

16.5 迭代器482

16.5.1 迭代器的定义483

16.5.2 迭代器语法483

16.5.3 从迭代器生成值485

16.5.4 迭代器和状态486

16.5.5 更多的迭代器例子488

16.5.6 将yield return语句放到循环中489

16.5.7 取消更多的迭代:yield break491

16.5.8 在单个类中创建多个迭代器493

16.5.9 yield语句的特征494

16.6 小结495

第17章 反射、特性和动态编程496

17.1 反射496

17.1.1 使用System.Type访问元数据497

17.1.2 成员调用499

17.1.3 泛型类型上的反射503

17.2 特性506

17.2.1 自定义特性509

17.2.2 查找特性509

17.2.3 使用构造器来初始化特性510

17.2.4 System.AttributeUsage-Attribute515

17.2.5 具名参数516

17.3 使用动态对象进行编程527

17.3.1 使用dynamic调用反射527

17.3.2 dynamic的原则和行为528

17.3.3 为什么需要动态绑定530

17.3.4 静态编译与动态编程的比较531

17.3.5 实现自定义动态对象532

17.4 小结534

第18章 多线程处理536

18.1 独立线程的运行和控制539

18.1.1 ContinueWith()543

18.1.2 Task上的未处理异常546

18.1.3 取消任务549

18.1.4 长时间运行的任务552

18.1.5 释放一个任务552

18.2 并行迭代553

18.2.1 使用System.AggregateEx-ception进行并行异常处理556

18.2.2 取消并行循环557

18.3 并行执行LINQ查询560

18.4 .NET Framework 4之前的多线程处理564

18.4.1 使用System.Threading.Thread进行异步操作564

18.4.2 线程管理566

18.4.3 线程池处理567

18.5 AppPomain的未处理异常568

18.6 小结570

第19章 同步和更多多线程处理模式571

19.1 同步572

19.1.1 使用Monitor来同步574

19.1.2 使用lock关键字576

19.1.3 lock对象的选择578

19.1.4 为什么要避免锁定this、typeof(type)和string578

19.1.5 将字段声明为volatile579

19.1.6 使用System.Threading.Interlocked类579

19.1.7 多个线程时的事件通知581

19.1.8 同步设计最佳实践582

19.1.9 更多的同步类型583

19.1.10 线程本地存储588

19.2 计时器591

19.3 异步编程模型596

19.3.1 调用APM596

19.3.2 使用TPC调用APM602

19.4 异步委托调用608

19.5 基于事件的异步模式(EAP)610

19.6 Background Worker模式613

19.6.1 模式的建立616

19.6.2 异常处理616

19.7 Windows UI编程617

19.7.1 Windows窗体617

19.7.2 Windows Presentation Foundation(WPF)619

19.8 小结621

第20章 平台互操作性和不安全的代码623

20.1 平台调用624

20.1.1 外部函数的声明624

20.1.2 参数的数据类型624

20.1.3 使用ref而不是指针626

20.1.4 为顺序布局使用StructLayoutAttribute626

20.1.5 错误处理627

20.1.6 使用SafeHandle629

20.1.7 外部函数的调用632

20.1.8 用包装简化API调用634

20.1.9 函数指针映射到委托635

20.1.10 指导原则635

20.2 指针和地址635

20.2.1 不安全的代码635

20.2.2 指针的声明637

20.2.3 指针的赋值638

20.2.4 指针的解引用640

20.2.5 访问被引用物类型的成员642

20.3 小结642

第21章 CLI645

21.1 CLI的定义645

21.2 CLI实现646

21.3 C#编译成机器码647

21.4 运行时649

21.4.1 垃圾回收649

21.4.2 .NET的垃圾回收650

21.4.3 类型安全650

21.4.4 代码访问安全性651

21.4.5 平台可移植性651

21.4.6 性能651

21.5 应用程序域652

21.6 程序集、清单和模块652

21.7 公共中间语言654

21.8 公共类型系统655

21.9 公共语言规范655

21.10 基类库655

21.11 元数据656

21.12 小结656

附录A 下载和安装C#编译器与CLI平台658

附录B 完整源代码清单660

附录C 来自System.Collections.Concurrent的并发类686

附录D C#2.0主题689

附录E C#3.0主题691

附录F C#4.0主题693

热门推荐