《C# 3.0完全参考手册》PDF下载

  • 购买积分:23 如何计算积分?
  • 作  者:(美)HerbertSchildt著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302220725
  • 页数:860 页
图书介绍:本书包含了最全面的C#资源,主要介绍了它的关键字、语法和核心库。另外,还详细介绍了C#3.0中新增的一些功能。

第Ⅰ部分C#语言 3

第1章C#的起源 3

1.1 C#的族谱 3

1.1.1 C语言:现代程序设计的开端 3

1.1.2 OOP和C++++语言的创建 4

1.1.3 Intemet和Java的出现 4

1.1.4 C#的创建 5

1.1.5 C#的发展 6

1.2 C#如何与.NET Framework相关 7

1.3公共语言运行库的工作原理 7

1.4托管和非托管代码 8

第2章C#概述 9

2.1面向对象程序设计 9

2.1.1封装 10

2.1.2多态性 10

2.1.3继承 11

2.2简单示例一 11

2.2.1 C#命令行编译器csc.exe 12

2.2.2使用Visual Studio IDE 13

2.2.3逐行分析第一个示例程序 17

2.3处理语法错误 18

2.4改写示例一 19

2.5简单示例二 20

2.6另一种数据类型 21

2.7两种控制语句 23

2.7.1 if语句 23

2.7.2 for循环 25

2.8代码块 26

2.9分号、定位和缩进 28

2.10 C#语言的关键字 28

2.11标识符 29

2.12.NET Framework类库 30

第3章 数据类型、直接量和变量 31

3.1数据类型的重要性 31

3.2 C#的数据类型 31

3.3整数类型 32

3.4浮点类型 34

3.5 decimal类型 36

3.6字符类型 37

3.7布尔类型 38

3.8自定义输出格式 39

3.9直接量 42

3.9.1十六进制直接量 42

3.9.2字符转义序列 43

3.9.3字符串直接量 43

3.10变量 45

3.10.1初始化变量 45

3.10.2动态初始化变量 46

3.10.3隐式类型的变量 46

3.11变量的作用域和生命周期 48

3.12类型转换 50

3.12.1自动类型转换 50

3.12.2强制转换不兼容的类型 51

3.13表达式中的类型转换 54

第4章 运算符 59

4.1算术运算符 59

4.2关系和逻辑运算符 63

4.3赋值运算符 67

4.4按位运算符 68

4.4.1按位与、或、异或和取反运算符 69

4.4.2移位运算符 75

4.4.3按位复合赋值 77

4.5问号(?)运算符 78

4.6空白符和圆括号 79

4.7运算符优先级 79

第5章 程序控制语句 81

5.1 if语句 81

5.1.1 if语句嵌套 82

5.1.2 if-else-if阶梯结构 83

5.2 switch语句 84

5.3 for循环 88

5.4 while循环 96

5.5 do-while循环 97

5.6 foreach循环 98

5.7使用break语句退出循环 98

5.8使用continue语句 101

5.9 goto语句 102

第6章 类和对象 105

6.1类基础 105

6.1.1类的基本形式 105

6.1.2定义类 106

6.2如何创建对象 110

6.3引用类型的变量和赋值 111

6.4方法 111

6.4.1给Building类添加方法 112

6.4.2从方法返回 114

6.4.3返回值 115

6.4.4使用参数 117

6.4.5给Building类添加带参数的方法 119

6.4.6避免产生不可到达的代码 121

6.5构造函数 121

6.5.1带参数的构造函数 122

6.5.2给Building类添加构造函数 123

6.6 new运算符 124

6.7垃圾回收和析构函数 125

6.8 this关键字 127

第7章 数组和字符串 131

7.1数组 131

7.2多维数组 135

7.2.1二维数组 135

7.2.2三维或更多维的数组 136

7.2.3初始化多维数组 137

7.3交错数组 138

7.4数组引用赋值 141

7.5 Length属性 142

7.6隐式类型的数组 145

7.7 foreach循环 147

7.8字符串 150

7.8.1构造字符串 151

7.8.2操作字符串 151

7.8.3字符串数组 154

7.8.4字符串是不可变的 156

7.8.5在switch语句中使用字符串 157

第8章 方法和类 159

8.1控制对类成员的访问 159

8.1.1 C#的访问修饰符 159

8.1.2公有访问和私有访问的应用 161

8.1.3访问控制:案例分析 161

8.2给方法传递引用 166

8.3使用ref和out参数 170

8.3.1使用ref关键字 170

8.3.2使用out关键字 172

8.3.3对引用参数使用ref和out 174

8.4使用数量可变的参数 176

8.5返回对象 178

8.6方法重载 182

8.7构造函数重载 187

8.8对象初始化器 193

8.9 Main()方法 194

8.9.1从Main()返回值 194

8.9.2给Main()传递参数 194

8.10递归 196

8.11理解static关键字 199

8.12静态类 204

第9章 运算符重载 207

9.1运算符重载基础 207

9.1.1重载二元运算符 208

9.1.2重载一元运算符 210

9.2处理针对C#内置类型的运算 214

9.3重载关系运算符 219

9.4重载true和false 221

9.5重载逻辑运算符 223

9.5.1一种重载逻辑运算符的简单方法 223

9.5.2使用短路运算符 226

9.6转换运算符 230

9.7运算符重载的注意事项 234

9.8运算符重载的另一个示例 235

第10章 索引器和属性 239

10.1索引器 239

10.1.1创建一维索引器 239

10.1.2索引器重载 243

10.1.3索引器不需要一个潜在的数组 245

10.1.4多维索引器 246

10.2属性 249

10.2.1自动实现属性 254

10.2.2对属性使用对象初始化器 254

10.2.3属性限制 255

10.3对存取器使用访问修饰符 255

10.4使用索引器和属性 258

第11章 继承 265

11.1继承基础 265

11.2成员访问和继承 268

11.3构造函数和继承 272

11.4继承和名称隐藏 279

11.5创建多级层次结构 282

11.6构造函数的调用 285

11.7基类引用和派生对象 286

11.8虚方法和重写 290

11.8.1重写方法的原因 294

11.8.2应用虚方法 294

11.9使用抽象类 298

11.10使用sealed来阻止继承 302

11.11 object类 302

11.11.1装箱和拆箱 304

11.11.2 object是否是通用数据类型 306

第12章 接口、结构和枚举 309

12.1接口 309

12.2使用接口类型的引用 314

12.3接口属性 317

12.4接口索引器 318

12.5接口的继承 320

12.6接口继承引起的名称隐藏 321

12.7显式实现 321

12.8在接口和抽象类之间选择 324

12.9.NET标准接口 324

12.10结构 325

12.11枚举 330

12.11.1初始化一个枚举 332

12.11.2指定枚举的基本类型 332

12.11.3使用枚举 332

第13章 异常处理 335

13.1 System.Exception类 335

13.2异常处理的基础 335

13.2.1使用try和catch 336

13.2.2一个简单的异常示例 336

13.2.3另一个异常示例 338

13.3未捕获异常的后果 339

13.4使用多个catch子句 341

13.5捕获所有的异常 342

13.6嵌套try块 344

13.7抛出异常 345

13.8 finally语句 347

13.9进一步分析异常类 349

13.10派生异常类 352

13.11捕获派生类异常 356

13.12 checked语句和unchecked语句 357

第14章I/O系统 361

14.1 C#的I/O依赖于数据流 361

14.1.1字节数据流和字符数据流 361

14.1.2预定义数据流 361

14.1.3数据流类 362

14.1.4 Stream类 362

14.1.5字节数据流类 363

14.1.6字符数据流封装类 363

14.1.7二进制数据流 365

14.2控制台I/O 365

14.2.1读取控制台输入 365

14.2.2使用ReadKey()方法 367

14.2.3写入控制台输出 369

14.3文件数据流和面向字节的文件I/O操作 370

14.3.1打开和关闭文件 370

14.3.2从FileStream中读取字节 372

14.3.3写入文件 373

14.3.4使用FileStream复制文件 374

14.4基于字符的文件I/O操作 376

14.4.1使用StreamWriter类 376

14.4.2 StreamReader类 378

14.5重定向标准数据流 380

14.6读取和写入二进制数据 382

14.6.1 BinaryWriter 382

14.6.2 BinaryReader 382

14.6.3二进制I/O操作的程序示例 384

14.7随机访问文件 388

14.8使用MemoryStream 391

14.9 StringReader和StringWriter 393

14.10把数值型字符串转换为内部表示格式 394

第15章 委托、事件和拉姆达表达式 399

15.1委托 399

15.1.1委托的方法组转换 402

15.1.2使用实例方法作为委托 402

15.1.3多播委托 404

15.1.4协变和逆变 406

15.1.5 System.Delegate 408

15.1.6使用委托的原因 408

15.2匿名函数 408

15.3匿名方法 408

15.3.1给匿名方法传递参数 409

15.3.2从匿名方法中返回一个值 410

15.3.3在匿名方法中使用外部变量 411

15.4拉姆达表达式 413

15.4.1拉姆达运算符 413

15.4.2表达式拉姆达 413

15.4.3语句拉姆达 416

15.5事件 418

15.5.1多播委托事件的示例 420

15.5.2作为事件处理程序的实例方法和静态方法的区别 422

15.5.3使用事件存取器 424

15.5.4事件的其他特性 429

15.6对事件使用匿名方法和拉姆达表达式 429

15.7 .NET事件的规则 430

15.8事件的应用:案例分析 433

第16章 名称空间、预处理器和程序集 437

16.1名称空间 437

16.1.1名称空间的声明 437

16.1.2名称空间可以避免名称冲突 440

16.1.3 using命令 441

16.1.4 using命令的另一种形式 443

16.1.5名称空间的合成 445

16.1.6嵌套名称空间 446

16.1.7全局名称空间 448

16.1.8使用名称空间别名限定符(∷) 448

16.2预处理器 452

16.2.1 #define 452

16.2.2 #if和#endif 453

16.2.3 #else和#elif 454

16.2.4 #undef 456

16.2.5 #error 456

16.2.6 #warning 457

16.2.7 #line 457

16.2.8 #region和#endregion 457

16.2.9 #pragma 457

16.3程序集和internal访问修饰符 458

第17章 运行时类型标识、反射和特性 461

17.1运行时类型标识 461

17.1.1使用is运算符测试类型 461

17.1.2使用as运算符 462

17.1.3使用typeof运算符 464

17.2反射 465

17.3使用反射 467

17.3.1获取方法的相关信息 467

17.3.2 GetMethods()的另一种形式 470

17.3.3使用反射调用方法 471

17.3.4获取Type对象的构造函数 474

17.3.5从程序集获得类型 478

17.3.6全自动类型查询 483

17.4特性 486

17.4.1特性基础 486

17.4.2创建特性 486

17.4.3连接特性 487

17.4.4获取对象的特性 487

17.4.5位置参数和命名参数 489

17.5三个内置特性 493

17.5.1 AttributeUsage特性 493

17.5.2 Conditional特性 494

17.5.3 Obsolete特性 495

第18章 泛型 497

18.1泛型概念 497

18.2一个简单的泛型示例 498

18.2.1泛型类型因类型参数的不同而不同 501

18.2.2泛型如何实现类型安全 501

18.3使用两个类型参数的泛型类 504

18.4泛型类的通用形式 505

18.5类型约束 505

18.5.1基类约束 506

18.5.2接口约束 514

18.5.3 new()构造函数约束 518

18.5.4引用类型和值类型约束 519

18.5.5使用约束建立两个类型参数之间的关系 522

18.5.6使用多重约束 523

18.6创建类型参数的默认值 524

18.7泛型结构 525

18.8创建泛型方法 526

18.8.1调用泛型方法时显式地指定类型实参 529

18.8.2为泛型方法指定约束 529

18.9泛型委托 529

18.10泛型接口 532

18.11比较同一类型参数的实例 536

18.12泛型类的层次结构 539

18.12.1使用泛型基类 539

18.12.2泛型派生类 541

18.13重写泛型类中的虚方法 542

18.14重载带类型参数的方法 544

18.15 泛型类型的实例化 545

18.16使用泛型时的一些局限 546

18.17小结 546

第19章LINQ 547

19.1 LINQ的定义 547

19.2 LINQ的基础知识 548

19.2.1简单查询 548

19.2.2查询可以多次执行 550

19.2.3查询中的数据类型的关联方式 551

19.2.4查询的一般形式 552

19.3使用where子句筛选值 552

19.4使用orderby子句排序结果 554

19.5深入讨论select子句 558

19.6使用嵌套的from子句 561

19.7使用group子句分组结果 562

19.8使用into子句创建继续 564

19.9在查询中使用let子句创建变量 566

19.10使用join子句连接两个序列 567

19.11匿名类型 570

19.12创建组连接 572

19.13查询方法 575

19.13.1基本查询方法 575

19.13.2使用查询方法创建查询 576

19.13.3查询语法与查询方法的对比 578

19.13.4更多与查询相关的扩展方法 578

19.14延期执行查询和立即执行查询 581

19.15 表达式树 582

19.16扩展方法 583

第20章 不安全代码、指针、空类型和其他主题 587

20.1不安全代码 587

20.1.1指针基础 588

20.1.2使用unsafe关键字 589

20.1.3使用fixed修饰符 590

20.1.4通过指针访问结构成员 591

20.1.5指针运算 591

20.1.6指针的比较 593

20.1.7指针和数组 593

20.1.8指针和字符串 595

20.1.9多重间接寻址 596

20.1.10指针数组 597

20.1.11 sizeof 597

20.1.12 stackalloc 597

20.1.13创建固定大小的缓冲区 598

20.2空类型 599

20.2.1空类型基础 600

20.2.2表达式中的空对象 601

20.2.3??运算符 602

20.2.4在空对象上使用关系和逻辑运算符 603

20.3部分类型 604

20.4部分方法 605

20.5友元程序集 606

20.6其他关键字 607

20.6.1 lock关键字 607

20.6.2 readonly关键字 607

20.6.3 const和volatile关键字 608

20.6.4 using语句 608

20.7 extern关键字 609

20.7.1声明extern方法 610

20.7.2声明extern程序集别名 611

第Ⅱ部分C#类库研究 615

第21章 研究System名称空间 615

21.1 System的成员 615

21.2 Math类 617

21.3与内置值类型对应的.NET结构 622

21.3.1整型结构 623

21.3.2浮点类型结构 625

21.3.3 Decimal结构 628

21.3.4 Char结构 633

21.3.5 Boolean结构 638

21.4 Array类 639

21.4.1排序和搜索数组 646

21.4.2反转数组 649

21.4.3复制数组 649

21.4.4使用谓词 650

21.4.5使用Action委托 652

21.5 BitConverter类 653

21.6用Random产生随机数 655

21.7内存管理和GC类 656

21.8 Object类 657

21.9 IComparable和IComparable<T>接口 657

21.10 IEquatable<T>接口 658

21.11 IConvertible接口 658

21.12 ICloneable接口 658

21.13 IFormatProvider接口和IFormattable接口 660

第22章 字符串和格式化 663

22.1 C#中的字符串 663

22.2 String类 663

22.2.1字符串构造函数 664

22.2.2 String类的字段、索引器和属性 664

22.2.3字符串运算符 665

22.2.4字符串方法 665

22.2.5填充和剪裁字符串 679

22.2.6插入、删除和替换 681

22.2.7改变字母大小写 682

22.2.8使用Substring()方法 682

22.2.9字符串扩展方法 683

22.3格式化类型 683

22.3.1格式化类型概述 683

22.3.2数值型数据的格式说明符 684

22.3.3理解参数编号 686

22.4使用String.Format()和ToString()格式化数据 686

22.4.1使用String.Format()格式化值 686

22.4.2使用ToString()格式化数据 689

22.5自定义数字格式 690

22.6格式化日期和时间 693

22.7格式化枚举 697

第23章 多线程程序设计 701

23.1多线程基础 701

23.2 Thread类 702

23.2.1创建和启动线程 702

23.2.2一些简单的改进 705

23.2.3创建多个线程 706

23.3确定线程结束的时间 708

23.4为线程传递参数 710

23.5 IsBackground属性 712

23.6线程优先级 713

23.7同步 715

23.7.1实现同步的另一种方式 719

23.7.2 Monitor类和锁 720

23.8使用Wait()、 Pulse()和PulseAll()实现线程通信 721

23.8.1 Wait()和Pulse()的示例 721

23.8.2死锁和竞争条件 725

23.9使用MethodImplAttribute属性 725

23.10使用互斥锁和信号量 727

23.10.1互斥锁 727

23.10.2信号量 731

23.11使用事件 734

23.12 Interlocked类 736

23.13终止线程 737

23.13.1 Abort()的另一种形式 739

23.13.2取消Abort() 740

23.14挂起和恢复线程 742

23.15 判断线程的状态 742

23.16使用主线程 742

23.17多线程编程提示 744

23.18开启独立任务 744

第24章 集合、枚举器和迭代器 747

24.1集合概述 747

24.2非泛型集合 748

24.2.1非泛型接口 748

24.2.2 DictionaryEntry结构 752

24.2.3非泛型集合类 753

24.3使用BitArray类存储位 768

24.4专用集合 770

24.5泛型集合 771

24.5.1泛型接口 771

24.5.2 KeyValuePair<TK,TV>结构 775

24.5.3泛型集合类 775

24.6在集合中存储用户自定义的类 793

24.7实现IComparable接口 795

24.7.1为非泛型集合实现IComparable接口 796

24.7.2为泛型集合实现IComparable<T>接口 797

24.8使用IComparer接口 799

24.8.1使用非泛型的IComparer 799

24.8.2使用泛型的IComparer<T> 800

24.9通过枚举器访问集合 802

24.9.1使用枚举器 802

24.9.2使用 IDictionaryEnumerator 803

24.10实现IEnumerable和IEnumerator接口 805

24.11迭代器 806

24.11.1停用迭代器 808

24.11.2使用多个yield指令 809

24.11.3创建命名迭代器 810

24.11.4创建泛型迭代器 811

24.12集合初始化器 812

第25章 通过 Internet连网 813

25.1 System.Net的成员 813

25.2统一资源标识符 815

25.3 Internet访问基础 815

25.3.1 WebRequest类 816

25.3.2 WebResponse类 818

25.3.3 HttpWebRequest类和HttpWebResponse类 819

25.3.4第一个简单的示例 819

25.4处理网络错误 821

25.4.1 Create()产生的异常 822

25.4.2 GetResponse()产生的异常 822

25.4.3 GetResponseStream()产生的异常 822

25.4.4使用异常处理 822

25.5 Uri类 824

25.6访问附加的HTTP响应信息 825

25.6.1访问报头 826

25.6.2访问Cookie 827

25.6.3使用LastModified属性 829

25.7 MiniCrawler:案例分析 829

25.8使用WebClient 833

第26章 使用System.Windows.Forms创建基于窗体的Windows应用程序 837

26.1 Windows程序设计简史 837

26.2编写基于窗体的 Windows应用程序的两种方式 838

26.3 Windows与用户交互操作的方法 838

26.4 Windows窗体 839

26.5基于窗体的Windows框架程序 839

26.6添加按钮 841

26.6.1按钮概述 842

26.6.2给窗体添加按钮 842

26.6.3简单的按钮示例 842

26.7消息处理 843

26.8使用消息框 845

26.9添加菜单 848

26.9.1创建传统样式的主菜单 848

26.9.2使用MenuStrip创建新式菜单 852

附录A文档注释快速参考 857