【套装2本】C#图解教程(第4版) 精通C#(第6版) c#高级编程自学从入门到精通 C#编程语言教pdf下载pdf下载

【套装2本】C#图解教程(第4版) 精通C#(第6版) c#高级编程自学从入门到精通 C#编程语言教百度网盘pdf下载

作者:
简介:本篇主要提供【套装2本】C#图解教程(第4版) 精通C#(第6版) c#高级编程自学从入门到精通 C#编程语言教pdf下载
出版社:
出版时间:2013-06
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍




C#图解教程 第5版
             定价 129.00
出版社 人民邮电出版社
版次 5
出版时间 2019年11月
开本 16开
作者 丹尼尔·索利斯 等
装帧 平装
页数 568
字数
ISBN编码 9787115519184
通C#(第6版)
定价 159.00
出版社 人民邮电出版社
版次 第版
出版时间 2014年11月
开本 16开
作者 [美]Andrew Troelsen 著
装帧 平装
页数 0
字数
ISBN编码 9787115321817


内容介绍

1.《C#图解教程 第5版》

本书是广受赞誉的《C# 图解教程》的 版本。作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式、朴实简洁的文字,并辅以大量表格和代码示例,全面、直观地阐述了C# 语言的各种特性。新版本除了 心修订旧版内容外,还全面涵盖了C# 6.0 和C# 7.0 的新增特性,比如局部函数、throw 表达式、name of 和空条件运算符、using static 指令、异常过滤器,等等。通过本书,读者能够快速、深入地理解C#,为自己的编程生涯打下良好的基础。

2.《 通C#(第6版)》是C#领域久负盛名的经典著作,深入全面地讲解了C#编程语言和.NET平台的核心内容,并结合大量示例剖析相关概念。全书分为八部分:C#和.NET平台、C#核心编程结构、C#面向对象编程、高 级C#编程结构、用.NET程序集编程、.NET基础类库、WPF和ASP.NET Web Forms。第6版是对第5版的进一步更新和完善,内容涵盖了**先进的.NET编程技术和技巧,并准确呈现出C#编程语言的**新变化和.NET 4.5 Framework的新特性。   《 通C#(第6版)》由微软C# MVP Andrew Troelsen编写,第6版专门针对C# 5.0和.NET 4.5进行了细致入微的修订,是各层次.NET开发人员的 读之作。



作者介绍

1.《C#图解教程 第5版》

丹尼尔·索利斯(Daniel Solis) 拥有20余年软件开发经验,微软、IBM等公司技术顾问。他不仅是深受读者爱戴和推崇的技术图书作家,而且也是享誉世界的技术培训专家,在美国和欧洲各地传授编程语言、Windows程序设计和Unix底层技术的经验和心得。 卡尔·施罗坦博尔(Cal Schrotenboer) 拥有20余年软件开发经验, 通C#,一直从事企业级软件开发。近十年来他还在加州的一些社区大学教授.NET相关课程。

2.《 通C#(第6版)》

Andrew Troelsen 世 界级C#专家,微软Visual C# MVP。他是著 名的微软技术咨询企业Intertech的合伙人和副总裁,该公司的客户包括微软、霍尼韦尔、美国guo家航空航天局等。他曾是MSDN 和MacTech .NET技术帖专家,并经常在业界主要技术会议上发表演讲和开设技术讲座。他还是公认的C#和.NET 技术书作家。除本书外,他还著有Pro Expression Blend 4、Pro VB 2008 and the .NET 3.5 Platform和COM and .NET Interoperability等近二十部.NET技术方面的著作。



目录

1.《C#图解教程 第5版》

第 1 章 C#和.NET 框架    1

1.1 在.NET 之前 1

1.1.1 20 世纪90 年代末的Windows编程 1

1.1.2 下一代平台服务的目标 2

1.2 .NET 时代 2

1.2.1 .NET 框架的组成 2

1.2.2 大大改进的编程环境 3

1.3 编译成CIL 5

1.4 编译成本机代码并执行 6

1.5 CLR 7

1.6 CLI 8

1.7 各种缩写 9

1.8 C#的演化 9

1.9 C#和Windows 的演化 10

第 2 章 C#和.NET Core 11

2.1 .NET 框架的背景 11

2.2 为什么选择.NET Core(和Xamarin) 11

2.3 .NET Core 的目标 12

2.4 多平台支持 13

2.5 快速发展和升级 13

2.6 程序占用空间小、部署简单、版本问题少 13

2.7 开源社区支持 14

2.8 改进的应用程序性能 14

2.9 全新的开始 14

2.10 .NET Core 的发展 15

2.11 .NET 框架的未来 15

2.12 Xamarin 的适用之处 15

第3 章 C#编程概述 16

3.1 一个简单的C#程序 16

3.2 标识符 18

3.3 关键字 18

3.4 Main:程序的起始点 19

3.5 空白 19

3.6 语句 20

3.7 从程序中输出文本 21

3.7.1 Write 21

3.7.2 WriteLine 21

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.1 C#程序是一组类型声明 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.2 C#类型的分类 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 方法 64

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.17 ref 局部变量和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.15 readonly 修饰符 117

7.16 this 关键字 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 整数字面量 164

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.16 typeof 运算符 189

9.17 nameof 运算符 190

9.18 其他运算符 191

第 10 章 语句 192

10.1 什么是语句 192

10.2 表达式语句 193

10.3 控制流语句 194

10.4 if 语句 194

10.5 if else 语句 195

10.6 while 循环 196

10.7 do 循环 197

10.8 for 循环 198

10.8.1 for 语句中变量的作用域 200

10.8.2 初始化和迭代表达式中的多表达式 200

10.9 switch 语句 201

10.9.1 分支示例 203

10.9.2 其他类型的模式表达式 203

10.9.3 switch 语句的补充 205

10.9.4 分支标签 206

10.10 跳转语句 207

10.11 break 语句 207

10.12 continue 语句 208

10.13 标签语句 209

10.13.1 标签 209

10.13.2 标签语句的作用域 209

10.14 goto 语句 210

10.15 using 语句 211

10.15.1 包装资源的使用 212

10.15.2 using 语句的示例 212

10.15.3 多个资源和嵌套 213

10.15.4 using 语句的另一种形式 214

10.16 其他语句 215

第 11 章 结构 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

第 12 章 枚举 223

12.1 枚举 223

12.1.1 设置底层类型和显式值 225

12.1.2 隐式成员编号 225

12.2 位标志 226

12.2.1 Flags 特性 229

12.2.2 使用位标志的示例 230

12.3 关于枚举的更多内容 231

第 13 章 数组 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.10 foreach 语句 247

13.10.1 迭代变量是只读的 248

13.10.2 foreach 语句和多维数组 249

13.11 数组协变 250

13.12 数组继承的有用成员 251

13.13 比较数组类型 254

13.14 数组与ref 返回和ref 局部变量 255

第 14 章 委托 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 委托的示例 264

14.11 调用带返回值的委托 265

14.12 调用带引用参数的委托 266

14.13 匿名方法 267

14.13.1 使用匿名方法 268

14.13.2 匿名方法的语法 268

14.13.3 变量和参数的作用域 270

14.14 Lambda 表达式 271

第 15 章 事件 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

第 16 章 接口 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

第 17 章 转换 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.10 is 运算符 325

17.11 as 运算符 326

第 18 章 泛型 327

18.1 什么是泛型 327

18.2 C#中的泛型 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.1 Where 子句 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

第 19 章 枚举器和迭代器 354

19.1 枚举器和可枚举类型 354

19.2 IEnumerator 接口 356

19.3 IEnumerable 接口 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 章 LINQ 371

20.1 什么是LINQ 371

20.2 LINQ 提供程序 372

20.3 方法语法和查询语法 374

20.4 查询变量 375

20.5 查询表达式的结构 376

20.5.1 from 子句 377

20.5.2 join 子句 378

20.5.3 什么是联结 379

20.5.4 查询主体中的from let where 片段 381

20.5.5 orderby 子句 384

20.5.6 select group 子句 385

20.5.7 查询中的匿名类型 386

20.5.8 group 子句 387

20.5.9 查询延续:into 子句 388

20.6 标准查询运算符 389

20.6.1 标准查询运算符的签名 392

20.6.2 查询表达式和标准查询运算符 393

20.6.3 将委托作为参数 394

20.6.4 LINQ 预定义的委托类型 395

20.6.5 使用委托参数的示例 396

20.6.6 使用Lambda 表达式参数的示例 397

20.7 LINQ to XML 398

20.7.1 标记语言 398

20.7.2 XML 基础 398

20.7.3 XML 类 400

20.7.4 使用XML 特性 406

20.7.5 其他类型的节点 408

20.7.6 使用LINQ to XML 的LINQ 查询 409

第 21 章 异步编程 412

21.1 什么是异步 412

21.2 async/await 特性的结构 416

21.3 什么是异步方法 417

21.3.1 异步方法的控制流 421

21.3.2 取消一个异步 作 427

21.3.3 在调用方法中同步地等待任务 430

21.3.4 在异步方法中异步地等待任务 433

21.3.5 Task.Delay 方法 435

21.4 GUI 程序中的异步 作 436

21.5 使用异步Lambda 表达式 440

21.6 完整的GUI 程序 441

21.7 BackgroundWorker 类 443

21.8 并行循环 447

21.9 其他异步编程模式 450

21.10 BeginInvoke 和EndInvoke 451

21.10.1 等待直到完成模式 452

21.10.2 AsyncResult 类 453

21.10.3 轮询模式 454

21.10.4 回调模式 455

21.11 计时器 458

第 22 章 命名空间和程序集 460

22.1 引用其他程序集 460

22.2 命名空间 464

22.2.1 命名空间名称 467

22.2.2 命名空间的补充 467

22.2.3 命名空间跨文件伸展 468

22.2.4 嵌套命名空间 469

22.3 using 指令 470

22.3.1 using 命名空间指令 470

22.3.2 using 别名指令 471

22.3.3 using static 指令 471

22.4 程序集的结构 472

22.5 程序集标识符 473

22.6 强命名程序集 474

22.7 私有程序集的部署 475

22.8 共享程序集和GAC 476

22.8.1 把程序集安装到GAC 476

22.8.2 GAC 内的并肩执行 477

22.9 配置文件 477

22.10 延迟签名 478

第 23 章 异常 480

23.1 什么是异常 480

23.2 try 语句 481

23.3 异常类 482

23.4 catch 子句 483

23.5 异常过滤器 485

23.6 catch 子句段 485

23.7 finally 块 486

23.8 为异常寻找处理程序 487

23.9 进一步搜索 488

23.9.1 一般法则 489

23.9.2 搜索调用栈的示例 489

23.10 抛出异常 492

23.11 不带异常对象的抛出 493

23.12 throw 表达式 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 #pragma warning 指令 503

第 25 章 反射和特性 504

25.1 元数据和反射 504

25.2 Type 类 505

25.3 获取Type 对象 506

25.4 什么是特性 508

25.5 应用特性 509

25.6 预定义的保留特性 509

25.6.1 Obsolete 特性 509

25.6.2 Conditional 特性 510

25.6.3 调用者信息特性 512

25.6.4 DebuggerStepThrough 特性 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.6 using static(C# 6.0) 527

26.7 空条件运算符(C# 6.0) 528

26.8 在catch 和finally 块中使用await(C# 6.0) 528

26.9 nameof 运算符(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.15 is 模式匹配(C# 7.0) 534

26.16 switch 模式匹配(C# 7.0) 536

26.17 自定义析构函数(C# 7.0) 538

26.18 二进制字面量和数字分隔符(C# 7.0) 540

26.19 out 变量(C# 7.0) 541

26.20 局部函数(C# 7.0) 542

26.21 ref 局部变量(ref 变量)和

ref 返回(C# 7.0) 544

26.22 表达式函数体成员的扩展(C# 7.0) 544

26.23 throw 表达式(C# 7.0) 545

26.24 扩展的async 返回类型(C# 7.0) 545

第 27 章 其他主题 546

27.1 概述 546

27.2 字符串 546

27.3 StringBuilder 类 548

27.4 把字符串解析为数据值 549

27.5 关于可空类型的更多内容 550

27.5.1 为可空类型赋值 552

27.5.2 使用空接合运算符 552

27.5.3 空条件运算符 553

27.5.4 使用可空用户定义类型 555

27.6 Main 方法 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 析构函数和dispose 模式 563

27.9.1 标准dispose 模式 564

27.9.2 比较构造函数和析构函数 566

27.10 Tuple 和ValueTuple 566

27.11 和COM 的互 作 568


2.《 通C#(第6版)》

部分 C#与.NET平台  

 

第 1章 .NET之道 2  

1.1 初识.NET平台 2  

1.2 .NET平台构造块(CLR、CTS和CLS)简介 3  

1.2.1 基础类库的作用 3  

1.2.2 C#的优点 4  

1.2.3 托管代码与非托管代码 5  

1.3 其他支持.NET的编程语言 5  

1.4 .NET程序集概览 7  

1.4.1 CIL的作用 8  

1.4.2 .NET类型元数据的作用 10  

1.4.3 程序集清单的作用 11  

1.5 CTS 12  

1.5.1 CTS类类型 12  

1.5.2 CTS接口类型 12  

1.5.3 CTS结构类型 13  

1.5.4 CTS枚举类型 13  

1.5.5 CTS委托类型 13  

1.5.6 CTS类型成员 14  

1.5.7 内建的CTS数据类型 14  

1.6 CLS 15  

1.7 CLR 16  

1.8 程序集/命名空间/类型的区别 17  

1.8.1 Microsoft根命名空间的作用 20  

1.8.2 以编程方式访问命名空间 20  

1.8.3 引用外部程序集 21  

1.9 使用ildasm.exe探索程序集 22  

1.9.1 查看CIL代码 23  

1.9.2 查看类型元数据 23  

1.9.3 查看程序集元数据(即清单) 24  

1.10 .NET的平台无关性 24  

1.11 Windows 8应用程序简介 25  

1.11.1 构建Windows 8应用程序 26  

1.11.2 .NET在Windows 8中的作用 27  

1.12 小结 28  

 

第 2章 构建C#应用程序 29  

2.1 .NET Framework 4.5 SDK的作用 29  

2.2 用csc.exe构建C#应用程序 30  

2.2.1 指定输入输出目标 31  

2.2.2 引用外部程序集 32  

2.2.3 引用多个外部程序集 33  

2.2.4 编译多个源文件 33  

2.2.5 使用C#响应文件 34  

2.3 使用Notepad++构建.NET应用程序 35  

2.4 使用SharpDevelop构建.NET应用程序 36  

2.5 使用Visual C# Express构建.NET应用程序 38  

2.6 使用Visual Studio构建.NET应用程序 39  

2.6.1 Visual Studio的独特功能 39  

2.6.2 使用New Project对话框指向.NET Framework 40  

2.6.3 解决方案资源管理器 40  

2.6.4 Class View工具 42  

2.6.5 Object Browser工具 43  

2.6.6 集成对代码重构的支持 43  

2.6.7 代码扩展和围绕技术 45  

2.6.8 可视化Class Designer 47  

2.6.9 集成的.NET Framework 4.5 SDK文档系统 50  

2.7 小结 51  

 

第 二部分 C#核心编程结构  

 

第3章 C#核心编程结构Ⅰ 54  

3.1 一个简单的C#程序 54  

3.1.1 Main()方法的其他形式 55  

3.1.2 指定应用程序错误代码 56  

3.1.3 处理命令行参数 57  

3.1.4 使用Visual Studio指定命令行参数 59  

3.2 有趣的题外话:System.Environment类的其他成员 59  

3.3 System.Console类 61  

3.3.1 使用Console类进行基本的输入和输出 61  

3.3.2 格式化控制台输出 62  

3.3.3 格式化数值数据 63  

3.3.4 在控制台应用程序外格式化数值数据 64  

3.4 系统数据类型和相应的C#关键字 64  

3.4.1 变量声明和初始化 65  

3.4.2 内建数据类型与new 作符 67  

3.4.3 数据类型类的层次结构 67  

3.4.4 数值数据类型的成员 69  

3.4.5 System.Boolean的成员 69  

3.4.6 System.Char的成员 69  

3.4.7 从字符串数据中解析数值 70  

3.4.8 System.DateTime和System.TimeSpan 70  

3.4.9 System.Numerics.dll程序集 71  

3.5 使用字符串数据 72  

3.5.1 基本的字符串 作 73  

3.5.2 字符串拼接 73  

3.5.3 转义字符 74  

3.5.4 定义逐字字符串 75  

3.5.5 字符串和相等性 75  

3.5.6 字符串是不可变的 76  

3.5.7 System.Text.StringBuilder类型 77  

3.6 窄化和宽化数据类型转换 78  

3.6.1 checked关键字 80  

3.6.2 设定项目级别的溢出检测 81  

3.6.3 unchecked关键字 82  

3.7 隐式类型本地变量 82  

3.7.1 隐式类型变量的限制 84  

3.7.2 隐式类型数据是强类型数据 84  

3.7.3 隐式类型本地变量的用途 85  

3.8 C#迭代结构 86  

3.8.1 for循环 86  

3.8.2 foreach循环 87  

3.8.3 while和do/while循环结构 87  

3.9 条件结构和关系/相等 作符 88  

3.9.1 if/else语句 88  

3.9.2 关系/相等 作符 88  

3.9.3 逻辑 作符 89  

3.9.4 switch语句 89  

3.10 小结 91  

 

第4章 C#核心编程结构Ⅱ 92  

4.1 方法和参数修饰符 92  

4.1.1 默认的参数传递行为 93  

4.1.2 out修饰符 94  

4.1.3 ref修饰符 95  

4.1.4 params修饰符 96  

4.1.5 定义可选参数 97  

4.1.6 使用命名参数调用方法 98  

4.1.7 成员重载 99  

4.2 C#数组 101  

4.2.1 C#数组初始化语法 102  

4.2.2 隐式类型本地数组 103  

4.2.3 定义object数组 103  

4.2.4 使用多维数组 104  

4.2.5 数组作为参数(和返回值) 105  

4.2.6 System.Array基类 106  

4.3 枚举类型 107  

4.3.1 控制枚举的底层存储 108  

4.3.2 声明枚举变量 109  

4.3.3 System.Enum类型 110  

4.3.4 动态获取枚举的名称/值对 110  

4.4 结构类型 112  

4.5 值类型和引用类型 115  

4.5.1 值类型、引用类型和赋值 作符 116  

4.5.2 包含引用类型的值类型 117  

4.5.3 按值传递引用类型 119  

4.5.4 按引用传递引用类型 120  

4.5.5 值类型和引用类型:**后的细节 121  

4.6 C#可空类型 122  

4.6.1 使用可空类型 123  

4.6.2  作符 124  

4.7 小结 124  

 

第三部分 C#面向对象编程  

 

第5章 封装 126  

5.1 C#类类型 126  

5.2 构造函数 129  

5.2.1 默认构造函数的作用 129  

5.2.2 定义自定义的构造函数 130  

5.2.3 再谈默认构造函数 131  

5.3 this关键字的作用 132  

5.3.1 使用this进行串联构造函数调用 133  

5.3.2 观察构造函数流程 135  

5.3.3 再谈可选参数 137  

5.4 static关键字 138  

5.4.1 定义静态数据 138  

5.4.2 定义静态方法 140  

5.4.3 定义静态构造函数 141  

5.4.4 定义静态类 143  

5.5 定义OOP的支柱 144  

5.5.1 封装的作用 144  

5.5.2 继承的作用 144  

5.5.3 多态的作用 146  

5.6 C#访问修饰符 147  

5.6.1 默认的访问修饰符 148  

5.6.2 访问修饰符和嵌套类型 148  

5.7  个支柱:C#的封装服务 149  

5.7.1 使用传统的访问方法和修改方法执行封装 149  

5.7.2 使用.NET属性进行封装 151  

5.7.3 使用类的属性 154  

5.7.4 只读和只写属性 155  

5.7.5 静态属性 156  

5.8 自动属性 156  

5.8.1 与自动属性交互 158  

5.8.2 关于自动属性和默认值 158  

5.9 对象初始化语法 160  

5.9.1 使用初始化语法调用自定义构造函数 161  

5.9.2 初始化内部类型 162  

5.10 常量数据 163  

5.10.1 只读字段 164  

5.10.2 静态只读字段 165  

5.11 分部类型 165  

5.12 小结 167  

 

第6章 继承和多态 168  

6.1 继承的基本机制 168  

6.1.1 指定既有类的父类 169  

6.1.2 多个基类 170  

6.1.3 sealed关键字 171  

6.2 回顾Visual Studio类关系图 172  

6.3 OOP的第 二个支柱:继承 173  

6.3.1 使用base关键字控制基类的创建 174  

6.3.2 家族的秘密:protected关键字 176  

6.3.3 增加密封类 177  

6.4 包含/委托编程 178  

6.5 OOP的第三个支柱:C#的多态支持 180  

6.5.1 virtual和override关键字 181  

6.5.2 使用Visual Studio IDE重写虚方法 183  

6.5.3 密封虚成员 184  

6.5.4 抽象类 184  

6.5.5 构建多态接口 186  

6.5.6 成员投影 189  

6.6 基类/派生类的转换规则 191  

6.6.1 C#的as关键字 192  

6.6.2 C#的is关键字 193  

6.7  父类:System.Object 193  

6.7.1 重写System.Object.ToString() 196  

6.7.2 重写System.Object.Equals() 196  

6.7.3 重写System.Object.GetHashCode() 197  

6.7.4 测试修改后的Person类 198  

6.7.5 System.Object的静态成员 199  

6.8 小结 199  

 

第7章 结构化异常处理 200  

7.1 错误、bug与异常 200  

7.2 .NET异常处理的作用 201  

7.2.1 .NET异常处理的四要素 202  

7.2.2 System.Exception基类 202  

7.3 **简单的例子 203  

7.3.1 引发普通的异常 205  

7.3.2 捕获异常 206  

7.4 配置异常的状态 207  

7.4.1 TargetSite属性 207  

7.4.2 StackTrace属性 208  

7.4.3 HelpLink属性 208  

7.4.4 Data属性 209  

7.5 系统级异常 211  

7.6 应用程序级异常 211  

7.6.1 构建自定义异常, 部分 212  

7.6.2 构建自定义异常,第 二部分 213  

7.6.3 构建自定义异常,第三部分 214  

7.7 处理多个异常 215  

7.7.1 通用的catch语句 217  

7.7.2 再次引发异常 218  

7.7.3 内部异常 218  

7.7.4 finally块 219  

7.8 谁在引发什么异常 220  

7.9 未处理异常的后果 220  

7.10 使用Visual Studio调试未处理的异常 221  

7.11 小结 222  

 

第8章 接口 223  

8.1 接口类型 223  

8.2 定义自定义接口 226  

8.3 实现接口 227  

8.4 在对象级别调用接口成员 229  

8.4.1 获取接口引用:as关键字 230  

8.4.2 获取接口引用:is关键字 230  

8.5 接口作为参数 231  

8.6 接口作为返回值 233  

8.7 接口类型数组 233  

8.8 使用Visual Studio实现接口 234  

8.9 显式接口实现 235  

8.10 设计接口层次结构 238  

8.11 构建可枚举类型(IEnumerable和IEnumerator) 241  

8.11.1 用yield关键字构建迭代器方法 243  

8.11.2 构建命名迭代器 244  

8.12 构建可克隆的对象(ICloneable) 245  

8.13 构建可比较的对象(IComparable) 249  

8.13.1 指定多个排序顺序 252  

8.13.2 自定义属性、自定义排序类型 253  

8.14 小结 253  

 

第四部分 高 级C#编程结构  

 

第9章 集合与泛型 256  

9.1 集合类的动机 256  

9.1.1 System.Collections命名空间 257  

9.1.2 System.Collections.Specialized命名空间 259  

9.2 非泛型集合的问题 260  

9.2.1 性能问题 260  

9.2.2 类型安全问题 263  

9.2.3 初识泛型集合 265  

9.3 泛型类型参数的作用 266  

9.3.1 为泛型类/结构指定类型参数 267  

9.3.2 为泛型成员指定类型参数 268  

9.3.3 为泛型接口指定类型参数 269  

9.4 System.Collections.Generic命名空间 270  

9.4.1 集合初始化语法 271  

9.4.2 使用List

类 272   

9.4.3 使用Stack类 273      

9.4.4 使用Queue类 274       

9.4.5 使用SortedSet类 275          

9.5 System.Collections.ObjectModel命名空间 277          

9.6 创建自定义泛型方法 279          

9.7 创建自定义泛型结构和类 282          

9.8 类型参数的约束 284          

9.8.1 使用where关键字的示例 284          

9.8.2  作符约束的不足 285          

9.9 小结 286          

         

第 10章 委托、事件和Lambda表达式 287          

10.1 .NET委托类型 287          

10.1.1 在C#中定义委托类型 288          

10.1.2 System.MulticastDelegate与System.Delegate基类 290          

10.2 **简单的委托示例 291          

10.3 使用委托发送对象状态通知 293          

10.3.1 支持多路广播 296          

10.3.2 从委托的调用列表中移除成员 297          

10.3.3 方法组转换语法 298          

10.4 泛型委托 300          

10.5 C#事件 303          

10.5.1 event关键字 304          

10.5.2 揭开事件的神秘面纱 305          

10.5.3 监听传入的事件 306          

10.5.4 使用Visual Studio简化事件注册 307          

10.5.5 创建自定义的事件参数 308          

10.5.6 泛型EventHandler委托 309           

10.6 C#匿名方法 310           

10.7 Lambda表达式 313           

10.7.1 剖析Lambda表达式 315           

10.7.2 使用多个语句处理参数 316           

10.7.3 含有多个(或零个)参数的Lambda表达式 317           

10.7.4 使用Lambda表达式重新编写CarEvents示例 318           

10.8 小结 319           

已省略更多。。。。。。