《C#图解教程 第4版 迄今为止最容易看懂的C#书》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)索利斯著;姚琪琳等译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2013
  • ISBN:9787115320902
  • 页数:524 页
图书介绍:延续该系列上几本的风格,本书采用数据、短而集中的代码样本,以及简洁、清晰的说明对c# 5.0进行了透彻的讲解。介绍了c# 5.0这种语言的细节,在.NET最新版本下的新功能,以及c#与其他编程语言的异同点。

第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

第2章 C#编程概述 10

2.1一个简单的C#程序 10

2.2标识符 12

2.3关键字 12

2.4 Main:程序的起始点 13

2.5空白 13

2.6语句 14

2.7从程序中输出文本 15

2.7.1 Write 15

2.7.2 WriteLine 15

2.7.3格式字符串 16

2.7.4多重标记和值 16

2.7.5格式化数字字符串 17

2.8注释:为代码添加注解 20

2.8.1关于注释的补充 21

2.8.2文档注释 21

2.8.3注释类型总结 22

第3章 类型、存储和变量 23

3.1 C#程序是一组类型声明 23

3.2类型是一种模板 24

3.3实例化类型 24

3.4数据成员和函数成员 25

3.5预定义类型 26

3.6用户定义类型 27

3.7栈和堆 28

3.7.1栈 28

3.7.2堆 29

3.8值类型和引用类型 30

3.8.1存储引用类型对象的成员 31

3.8.2 C#类型的分类 31

3.9变量 32

3.9.1变量声明 32

3.9.2多变量声明 34

3.9.3使用变量的值 34

3.10静态类型和dynamic关键字 34

3.11可空类型 35

第4章 类的基本概念 36

4.1类的概述 36

4.2程序和类:一个快速示例 37

4.3声明类 38

4.4类成员 38

4.4.1字段 38

4.4.2方法 40

4.5创建变量和类的实例 41

4.6为数据分配内存 41

4.7实例成员 42

4.8访问修饰符 43

4.9从类的内部访问成员 45

4.10从类的外部访问成员 46

4.11综合应用 47

第5章 方法 49

5.1方法的结构 49

5.2方法体内部的代码执行 50

5.3本地变量 51

5.3.1类型推断和var关键字 52

5.3.2嵌套块中的本地变量 52

5.4本地常量 53

5.5控制流 54

5.6方法调用 55

5.7返回值 56

5.8返回语句和void方法 57

5.9参数 59

5.9.1形参 59

5.9.2实参 59

5.10值参数 61

5.11引用参数 63

5.12引用类型作为值参数和引用参数 65

5.13输出参数 68

5.14参数数组 70

5.14.1方法调用 71

5.14.2用数组作为实参 73

5.15参数类型总结 74

5.16方法重载 74

5.17命名参数 75

5.18可选参数 76

5.19栈帧 79

5.20递归 81

第6章 深入理解类 83

6.1类成员 83

6.2成员修饰符的顺序 84

6.3实例类成员 85

6.4静态字段 86

6.5从类的外部访问静态成员 86

6.5.1静态字段示例 87

6.5.2静态成员的生存期 87

6.6静态函数成员 88

6.7其他静态类成员类型 89

6.8成员常量 90

6.9常量与静态量 90

6.10属性 91

6.10.1属性声明和访问器 92

6.10.2属性示例 93

6.10.3使用属性 94

6.10.4属性和关联字段 94

6.10.5执行其他计算 96

6.10.6只读和只写属性 96

6.10.7属性与公共字段 97

6.10.8计算只读属性示例 97

6.10.9自动实现属性 98

6.10.10静态属性 99

6.11实例构造函数 100

6.11.1带参数的构造函数 101

6.11.2默认构造函数 102

6.12静态构造函数 102

6.13对象初始化语句 104

6.14析构函数 105

6.15 readonly修饰符 105

6.16 this关键字 106

6.17索引器 107

6.17.1什么是索引器 108

6.17.2索引器和属性 108

6.17.3声明索引器 109

6.17.4索引器的set访问器 110

6.17.5索引器的get访问器 110

6.17.6关于索引器的补充 111

6.17.7为Employee示例声明索引器 111

6.17.8另一个索引器的示例 112

6.17.9索引器重载 113

6.18访问器的访问修饰符 114

6.19分部类和分部类型 115

6.20分部方法 116

第7章 类和继承 118

7.1类继承 118

7.2访问继承的成员 119

7.3所有类都派生自object类 120

7.4屏蔽基类的成员 121

7.5基类访问 123

7.6使用基类的引用 124

7.6.1虚方法和覆写方法 125

7.6.2覆写标记为override的方法 127

7.6.3覆盖其他成员类型 130

7.7构造函数的执行 130

7.7.1构造函数初始化语句 132

7.7.2类访问修饰符 134

7.8程序集间的继承 134

7.9成员访问修饰符 136

7.9.1访问成员的区域 137

7.9.2公有成员的可访问性 138

7.9.3私有成员的可访问性 138

7.9.4受保护成员的可访问性 138

7.9.5内部成员的可访问性 139

7.9.6受保护内部成员的可访问性 139

7.9.7成员访问修饰符小结 140

7.10抽象成员 141

7.11抽象类 142

7.11.1抽象类和抽象方法的示例 142

7.11.2抽象类的另一个例子 143

7.12密封类 144

7.13静态类 144

7.14扩展方法 145

7.15 命名约定 148

第8章 表达式和运算符 150

8.1表达式 150

8.2字面量 151

8.2.1整数字面量 152

8.2.2实数字面量 153

8.2.3字符字面量 153

8.2.4字符串字面量 154

8.3求值顺序 156

8.3.1优先级 156

8.3.2结合性 157

8.4简单算术运算符 157

8.5求余运算符 158

8.6关系比较运算符和相等比较运算符 159

8.7递增运算符和递减运算符 160

8.8条件逻辑运算符 162

8.9逻辑运算符 163

8.10移位运算符 164

8.11赋值运算符 165

8.12条件运算符 167

8.13一元算术运算符 168

8.14用户定义的类型转换 169

8.15 运算符重载 172

8.15.1运算符重载的限制 172

8.15.2运算符重载的示例 173

8.16 typeof运算符 174

8.17其他运算符 176

第9章 语句 177

9.1什么是语句 177

9.2表达式语句 178

9.3控制流语句 179

9.4 if语句 179

9.5 if……else语句 180

9.6 while循环 181

9.7 do循环 182

9.8 for循环 183

9.8.1 for语句中变量的作用域 185

9.8.2初始化和迭代表达式中的多表达式 185

9.9 switch语句 186

9.9.1分支示例 187

9.9.2 switch语句的补充 188

9.9.3分支标签 189

9.10跳转语句 189

9.11 break语句 190

9.12 continue语句 190

9.13标签语句 191

9.13.1标签 191

9.13.2标签语句的作用域 192

9.14 goto语句 192

9.15 using语句 193

9.15.1资源的包装使用 194

9.15.2 using语句的示例 195

9.15.3多个资源和嵌套 196

9.15.4 using语句的另一种形式 197

9.16其他语句 197

第10章 结构 198

10.1什么是结构 198

10.2结构是值类型 199

10.3对结构赋值 200

10.4构造函数和析构函数 201

10.4.1实例构造函数 201

10.4.2静态构造函数 202

10.4.3构造函数和析构函数小结 203

10.5字段初始化语句是不允许的 203

10.6结构是密封的 203

10.7装箱和拆箱 203

10.8结构作为返回值和参数 204

10.9关于结构的其他信息 204

第11章 枚举 205

11.1枚举 205

11.1.1设置底层类型和显式值 206

11.1.2隐式成员编号 207

11.2位标志 208

11.2.1 Flags特性 210

11.2.2使用位标志的示例 212

11.3关于枚举的补充 213

第12章 数组 216

12.1数组 216

12.1.1定义 216

12.1.2重要细节 217

12.2数组的类型 217

12.3数组是对象 218

12.4一维数组和矩形数组 219

12.5实例化一维数组或矩形数组 220

12.6访问数组元素 220

12.7初始化数组 221

12.7.1显式初始化一维数组 222

12.7.2显式初始化矩形数组 222

12.7.3初始化矩形数组的语法点 223

12.7.4快捷语法 223

12.7.5隐式类型数组 223

12.7.6综合内容 224

12.8交错数组 224

12.8.1声明交错数组 225

12.8.2快捷实例化 225

12.8.3实例化交错数组 226

12.8.4交错数组中的子数组 227

12.9比较矩形数组和交错数组 228

12.10 foreach语句 229

12.10.1迭代变量是只读的 230

12.10.2 foreach语句和多维数组 231

12.11数组协变 232

12.12数组继承的有用成员 233

12.13比较数组类型 236

第13章 委托 237

13.1什么是委托 237

13.2委托概述 239

13.3声明委托类型 240

13.4创建委托对象 241

13.5给委托赋值 242

13.6组合委托 243

13.7为委托添加方法 243

13.8从委托移除方法 244

13.9调用委托 244

13.10委托的示例 245

13.11调用带返回值的委托 246

13.12调用带引用参数的委托 247

13.13匿名方法 248

13.13.1使用匿名方法 249

13.13.2匿名方法的语法 249

13.13.3变量和参数的作用域 250

13.14 Lambda表达式 252

第14章 事件 255

14.1发布者和订阅者 255

14.2源代码组件概览 257

14.3声明事件 257

14.4订阅事件 258

14.5触发事件 259

14.6标准事件的用法 261

14.6.1通过扩展EventArgs来传递数据 262

14.6.2移除事件处理程序 264

14.7事件访问器 265

第15章 接口 267

15.1什么是接口 267

15.2声明接口 272

15.3实现接口 273

15.4接口是引用类型 275

15.5接口和as运算符 276

15.6实现多个接口 276

15.7实现具有重复成员的接口 277

15.8多个接口的引用 279

15.9派生成员作为实现 280

15.10显式接口成员实现 281

15.11接口可以继承接口 283

15.12不同类实现一个接口的示例 284

第16章 转换 286

16.1什么是转换 286

16.2隐式转换 287

16.3显式转换和强制转换 288

16.4转换的类型 289

16.5数字的转换 290

16.5.1隐式数字转换 290

16.5.2溢出检测上下文 291

16.5.3显式数字转换 292

16.6引用转换 295

16.6.1隐式引用转换 296

16.6.2显式引用转换 297

16.6.3有效显式引用转换 298

16.7装箱转换 299

16.7.1装箱是创建副本 300

16.7.2装箱转换 300

16.8拆箱转换 301

16.9用户自定义转换 302

16.9.1用户自定义转换的约束 302

16.9.2用户自定义转换的示例 302

16.9.3评估用户自定义转换 304

16.9.4多步用户自定义转换的示例 304

16.10 is运算符 305

16.11 as运算符 306

第17章 泛型 308

17.1什么是泛型 308

17.2 C#中的泛型 310

17.3泛型类 311

17.4声明泛型类 312

17.5创建构造类型 312

17.6创建变量和实例 313

17.6.1使用泛型的栈的示例 315

17.6.2比较泛型和非泛型栈 316

17.7类型参数的约束 317

17.7.1 Where子句 317

17.7.2约束类型和次序 318

17.8泛型方法 319

17.8.1声明泛型方法 319

17.8.2调用泛型方法 320

17.8.3泛型方法的示例 321

17.9扩展方法和泛型类 322

17.10泛型结构 323

17.11泛型委托 323

17.12泛型接口 325

17.12.1使用泛型接口的示例 326

17.12.2泛型接口的实现必须唯一 327

17.13协变 328

17.14逆变 330

17.14.1接口的协变和逆变 332

17.14.2有关可变性的更多内容 333

第18章 枚举器和迭代器 335

18.1枚举器和可枚举类型 335

18.2 IEnumerator接口 337

18.3泛型枚举接口 341

18.4迭代器 343

18.4.1迭代器块 343

18.4.2使用迭代器来创建枚举器 344

18.4.3使用迭代器来创建可枚举类型 346

18.5常见迭代器模式 347

18.6产生多个可枚举类型 348

18.7将迭代器作为属性 349

18.8迭代器实质 350

第19章 LINQ 352

19.1什么是LINQ 352

19.2 LINQ提供程序 353

19.3方法语法和查询语法 355

19.4查询变量 356

19.5查询表达式的结构 357

19.5.1 from子句 358

19.5.2 join子句 359

19.5.3什么是联结 360

19.5.4查询主体中的from……let……where片段 362

19.5.5 orderby子句 365

19.5.6 select……group子句 366

19.5.7查询中的匿名类型 367

19.5.8 group子句 368

19.5.9查询延续:into子句 369

19.6标准查询运算符 370

19.6.1标准查询运算符的签名 373

19.6.2查询表达式和标准查询运算符 374

19.6.3将委托作为参数 375

19.6.4 LINQ预定义的委托类型 376

19.6.5使用委托参数的示例 377

19.6.6使用Lambda表达式参数的示例 378

19.7 LINQ to XML 379

19.7.1标记语言 379

19.7.2 XML基础 379

19.7.3 XML类 381

19.7.4使用XML特性 387

19.7.5节点的其他类型 389

19.7.6使用LINQ to XML的LINQ查询 390

第20章 异步编程 393

20.1什么是异步 393

20.2 async/await特性的结构 398

20.3什么是异步方法 399

20.3.1异步方法的控制流 402

20.3.2 await表达式 404

20.3.3取消一个异步操作 407

20.3.4异常处理和await表达式 409

20.3.5在调用方法中同步地等待任务 410

20.3.6在异步方法中异步地等待任务 413

20.3.7 Task.Delay方法 415

20.4在GUI程序中执行异步操作 416

20.5使用异步Lambda表达式 420

20.6完整的GUI程序 421

20.7 BackgroundWorker类 423

20.8并行循环 428

20.9其他异步编程模式 430

20.10 BeginInvoke和EndInvoke 431

20.10.1等待—直到结束模式 432

20.10.2 AsyncResult类 433

20.10.3轮询模式 434

20.10.4回调模式 435

20.11计时器 438

第21章 命名空间和程序集 440

21.1引用其他程序集 440

21.2命名空间 444

21.2.1命名空间名称 447

21.2.2命名空间的补充 447

21.2.3命名空间跨文件伸展 448

21.2.4嵌套命名空间 449

21.3 using指令 450

21.3.1 using命名空间指令 450

21.3.2 using别名指令 451

21.4程序集的结构 451

21.5程序集标识符 453

21.6强命名程序集 453

21.7程序集的私有方式部署 455

21.8共享程序集和GAC 455

21.8.1把程序集安装到GAC 455

21.8.2 GAC内的并肩执行 456

21.9配置文件 457

21.10延迟签名 457

第22章 异常 459

22.1什么是异常 459

22.2 try语句 460

22.3异常类 461

22.4 catch子句 462

22.5使用特定catch子句的示例 462

22.6 catch子句段 463

22.7 finally块 464

22.8为异常寻找处理程序 465

22.9更进一步搜索 466

22.9.1一般法则 466

22.9.2搜索调用栈的示例 467

22.10抛出异常 469

22.11不带异常对象的抛出 470

第23章 预处理指令 472

23.1什么是预处理指令 472

23.2基本规则 472

23.3 #define和#undef指令 473

23.4条件编译 474

23.5条件编译结构 475

23.6诊断指令 476

23.7行号指令 477

23.8区域指令 478

23.9 #pragma warning指令 479

第24章 反射和特性 480

24.1元数据和反射 480

24.2 Type类 480

24.3获取Type对象 482

24.4什么是特性 484

24.5应用特性 485

24.6预定义的保留的特性 485

24.6.1 Obsolete特性 485

24.6.2 Conditional特性 486

24.6.3调用者信息特性 488

24.6.4 DebuggerStepThrough特性 488

24.6.5其他预定义特性 489

24.7有关应用特性的更多内容 490

24.7.1多个特性 490

24.7.2其他类型的目标 490

24.7.3全局特性 491

24.8自定义特性 491

24.8.1声明自定义特性 492

24.8.2使用特性的构造函数 492

24.8.3指定构造函数 492

24.8.4使用构造函数 493

24.8.5构造函数中的位置参数和命名参数 493

24.8.6限制特性的使用 494

24.8.7自定义特性的最佳实践 495

24.9访问特性 496

24.9.1使用IsDefined方法 496

24.9.2使用GetCustomAttributes方法 497

第25章 其他主题 499

25.1概述 499

25.2字符串 499

25.3使用StringBuilder类 501

25.4把字符串解析为数据值 502

25.5关于可空类型的更多内容 503

25.5.1为可空类型赋值 505

25.5.2使用空接合运算符 505

25.5.3使用可空用户自定义类型 506

25.6 Main方法 508

25.7文档注释 509

25.7.1插入文档注释 510

25.7.2使用其他XML标签 510

25.8嵌套类型 511

25.8.1嵌套类的示例 512

25.8.2可见性和嵌套类型 513

25.9析构函数和dispose模式 514

25.9.1标准dispose模式 515

25.9.2比较构造函数和析构函数 517

25.10和COM的互操作 518

索引 521