《C# 4.0图解教程》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)索利斯著;苏林等译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2011
  • ISBN:9787115251831
  • 页数:469 页
图书介绍:本书是一本广受赞誉的C#教程。它以图文并茂的形式,用朴实简洁的文字,并辅之以大量表格和代码示例,精炼而全面地阐述了C#2010的各种特性,使读者能够快速理解、学习和使用C#。同时, 本书还讲解了C#与VB 、C++ 等主流语言的不同点和相似之处。

第1章C#和NET框架 1

1.1在NET之前 1

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

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

1.2进入Microsoft NET 2

1.2.1NET框架的组成 2

1.2.2大大改进的编程环境 3

1.3编译成CIL 5

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

1.5 CLR 6

1.6 CLI 7

1.7缩写回顾 8

第2章C#编程概述 9

2.1一个简单的C#程序 9

2.2标识符和关键字 11

2.2.1命名约定 11

2.2.2关键字 12

2.3 Main:程序的起始点 12

2.4空白 13

2.5语句 13

2.5.1简单语句 13

2.5.2块 14

2.6从程序中输出文本 14

2.6.1 Write 14

2.6.2 WriteLine 15

2.6.3格式字符串 15

2.6.4多重标记和值 16

2.7注释 16

2.7.1关于注释的补充 17

2.7.2文档注释 17

2.7.3注释类型总结 18

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

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

3.2类型是种模板 20

3.3实例化类型 20

3.4数据成员和函数成员 21

3.5预定义类型 21

3.6用户定义类型 23

3.7栈和堆 24

3.7.1栈 24

3.7.2堆 25

3.8值类型和引用类型 25

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

3.8.2 C#类型的分类 27

3.9变量 27

3.9.1变量声明 27

3.9.2多重变量声明 29

3.9.3使用变量的值 29

3.10静态类型和dynamic关键字 29

3.11 可空类型 30

3.11.1创建可空类型 30

3.11.2为可空类型赋值 31

第4章类:基础 32

4.1类的概述 32

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

4.3声明类 33

4.4类成员 34

4.4.1字段 34

4.4.2显式和隐式字段初始化 35

4.4.3声明多个字段 36

4.4.4方法 36

4.5创建变量和类的实例 37

4.6为数据分配内存 37

4.7实例成员 38

4.8访问修饰符 39

4.9从类的内部访问成员 41

4.10从类的外部访问成员 42

4.11综合应用 43

第5章 方法 45

5.1方法的结构 45

5.2本地变量 47

5.2.1类型推断和var关键字 47

5.2.2嵌套块中的本地变量 48

5.3本地常量 49

5.4方法调用 51

5.5返回值 52

5.6参数 54

5.6.1形参 54

5.6.2实参 55

5.6.3带位置输入参数的方法示例 55

5.7值参数 56

5.8引用参数 58

5.9输出参数 60

5.10参数数组 62

5.10.1方法调用 63

5.10.2数组作实参 65

5.11参数类型总结 66

5.12方法重载 66

5.13命名参数 67

5.14可选参数 68

5.15栈帧 71

5.16递归 72

第6章 类进阶 74

6.1类成员 74

6.2实例类成员 76

6.3静态字段 76

6.4从类的外部访问静态成员 77

6.4.1静态字段示例 77

6.4.2静态成员的生存期 78

6.5静态函数成员 79

6.6其他静态类成员类型 80

6.7成员常量 80

6.8属性 82

6.8.1属性声明和访问器 83

6.8.2属性示例 83

6.8.3使用属性 84

6.8.4属性和关联字段 85

6.8.5执行其他计算 86

6.8.6只读和只写属性 87

6.8.7计算只读属性示例 87

6.8.8属性和数据库示例 88

6.8.9属性vs.公共字段 88

6.8.10自动实现属性 89

6.8.11静态属性 89

6.9实例构造函数 90

6.9.1带参数的构造函数 91

6.9.2默认构造函数 92

6.10静态构造函数 93

6.10.1静态构造函数示例 93

6.10.2构造函数的可访问性 94

6.11对象初始化列表 94

6.12析构函数 95

6.12.1调用析构函数 96

6.12.2标准清理模式 98

6.13比较构造函数和析构函数 99

6.14 readonly修饰符 99

6.15 this关键字 100

6.16索引 101

6.16.1什么是索引 102

6.16.2索引和属性 102

6.16.3声明索引 103

6.16.4索引的set访问器 104

6.16.5索引的get访问器 104

6.16.6关于索引的补充 105

6.16.7为Employee示例声明索引 105

6.16.8另一个索引示例 106

6.16.9索引重载 107

6.17访问器的访问修饰符 107

6.18分部类和分部类型 109

第7章 类和继承 112

7.1类继承 112

7.2访问继承的成员 113

7.3隐藏基类的成员 115

7.4基类访问 116

7.5使用基类的引用 117

7.5.1虚方法和覆写方法 119

7.5.2覆写标记为override的方法 120

7.5.3覆盖其他成员类型 123

7.6构造函数的执行 124

7.6.1构造函数初始化语句 125

7.6.2类访问修饰符 127

7.7程序集间的继承 128

7.8成员访问修饰符 129

7.8.1访问成员的区域 130

7.8.2公有成员的可访问性 131

7.8.3私有成员的可访问性 131

7.8.4受保护成员的可访问性 132

7.8.5内部成员的可访问性 132

7.8.6受保护内部成员的可访问性 132

7.8.7成员访问修饰符的总结 133

7.9抽象成员 133

7.10抽象类 134

7.10.1抽象类和抽象方法的示例 135

7.10.2抽象类的另一个例子 136

7.11密封类 137

7.12静态类 137

7.13扩展方法 138

第8章 表达式和运算符 142

8.1表达式 142

8.2字面量 143

8.3整数字面量 144

8.4字符字面量 145

8.5字符串字面量 146

8.6求值顺序 147

8.6.1优先级 148

8.6.2结合性 148

8.7简单算术运算符 149

8.8求余运算符 149

8.9关系比较运算符和相等比较运算符 150

8.10递增运算符和递减运算符 152

8.11条件逻辑运算符 153

8.12逻辑运算符 154

8.13移位运算符 155

8.14赋值运算符 157

8.15条件运算符 158

8.16一元算术运算符 159

8.17用户定义类型转换 160

8.18运算符重载 162

8.18.1运算符重载的限制 163

8.18.2运算符重载的示例 164

8.19 typeof运算符 165

8.20其他运算符 166

第9章 语句 167

9.1什么是语句 167

9.2表达式语句 168

9.3控制流语句 169

9.4 if语句 169

9.5 if else语句 170

9.6 switch语句 171

9.6.1分支示例 172

9.6.2 switch语句的补充 173

9.6.3 switch标签 174

9.7 while循环 174

9.8 do循环 175

9.9 for循环 176

9.9.1 for语句中变量的有效范围 177

9.9.2初始化语句和迭代表达式中的多表达式 178

9.10跳转语句 178

9.11 break语句 178

9.12 continue语句 179

9.13标签语句 180

9.13.1标签 180

9.13.2标签语句的范围 180

9.14 goto语句 181

9.15 using语句 182

9.15.1资源的包装使用 183

9.15.2 using语句的示例 183

9.15.3多个资源和嵌套 184

9.15.4 using语句的另一种形式 185

9.16其他语句 186

第10章 命名空间和程序集 187

10.1引用其他程序集 187

10.2命名空间 191

10.2.1命名空间名称 194

10.2.2命名空间的补充 194

10.2.3命名空间跨文件伸展 195

10.2.4嵌套命名空间 195

10.3 using指令 196

10.3.1 using命名空间指令 196

10.3.2 using别名指令 197

10.4程序集的结构 198

10.5程序集标识符 199

10.6强命名程序集 200

10.7程序集的私有方式部署 201

10.8共享程序集和GAC 201

10.8.1把程序集安装到GAC 201

10.8.2 GAC内的并肩执行 202

10.9配置文件 203

10.10延迟签名 203

第11章 异常 205

11.1什么是异常 205

11.2 try语句 206

11.3异常类 207

11.4 catch子句 207

11.4.1使用特定catch子句的示例 208

11.4.2 catch子句段 209

11.5 finally块 210

11.6为异常寻找处理代码 211

11.7更进一步搜索 211

11.7.1一般法则 212

11.7.2搜索调用栈的示例 213

11.8 抛出异常 214

11.9不带异常对象的抛出 215

第12章 结构 217

12.1什么是结构 217

12.2结构是值类型 218

12.3对结构赋值 219

12.4构造函数和析构函数 220

12.4.1实例构造函数 220

12.4.2静态构造函数 221

12.4.3构造函数和析构函数的总结 221

12.5字段初始化是不允许的 222

12.6结构是密封的 222

12.7装箱和取消装箱 222

12.8结构作为返回值和参数 222

12.9关于结构的附加信息 222

第13章 枚举 224

13.1枚举 224

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

13.1.2隐式成员编号 226

13.2位标志 227

13.2.1 Flags特性 229

13.2.2使用位标志的示例 230

13.3关于枚举的补充 231

第14章 数组 233

14.1数组 233

14.1.1定义 233

14.1.2重要细节 234

14.2数组的类型 234

14.3数组是对象 235

14.4.维数组和矩形数组 236

14.5实例化一维数组或矩形数组 236

14.6访问数组元素 237

14.7初始化数组 238

14.7.1显式初始化一维数组 238

14.7.2显式初始化矩形数组 239

14.7.3初始化矩形数组的语法点 239

14.7.4快捷语法 240

14.7.5隐式类型数组 240

14.7.6综合内容 241

14.8交错数组 241

14.8.1声明交错数组 242

14.8.2快捷实例化 242

14.8.3实例化交错数组 242

14.8.4交错数组中的子数组 243

14.9比较矩形数组和交错数组 244

14.10 foreach语句 245

14.10.1迭代变量是只读的 246

14.10.2 foreach语句和多维数组 247

14.11数组协变 248

14.12数组继承的有用成员 249

14.13比较数组类型 252

第15章 委托 253

15.1什么是委托 253

15.2声明委托类型 255

15.3创建委托对象 255

15.4赋值委托 257

15.5组合委托 257

15.6为委托增加方法 258

15.7从委托移除方法 259

15.8调用委托 259

15.9委托的示例 260

15.10调用带返回值的委托 261

15.11调用带引用参数的委托 262

15.12匿名方法 262

15.12.1使用匿名方法 263

15.12.2匿名方法的语法 263

15.12.3变量和参数的作用域 265

15.13 Lambda表达式 266

第16章 事件 269

16.1事件和委托相似 269

16.2源代码组件概览 270

16.3声明事件 271

16.3.1事件是成员 271

16.3.2委托类型和EventHandler 272

16.4触发事件 272

16.5订阅事件 273

16.6标准事件的用法 275

16.6.1使用EventArgs类 275

16.6.2通过扩展EventArgs来传递数据 276

16.6.3使用自定义委托 276

16.7 MyTimerClass代码 278

16.8事件访问器 279

第17章 接口 280

17.1什么是接口 280

17.2声明接口 283

17.3实现接口 284

17.4接口是引用类型 285

17.5接口和as运算符 287

17.6实现多个接口 287

17.7实现具有重复成员的接口 288

17.8多个接口的引用 289

17.9派生成员作为实现 291

17.10显式接口成员实现 291

17.11接口可以继承接口 294

第18章 转换 297

18.1什么是转换 297

18.2隐式转换 298

18.3显式转换和强制转换 299

18.4转换的类型 300

18.5数字的转换 301

18.5.1隐式数字转换 301

18.5.2溢出检测上下文 302

18.5.3显式数字转换 303

18.6引用转换 306

18.6.1隐式引用转换 307

18.6.2显式引用转换 308

18.6.3有效显式引用转换 308

18.7装箱转换 309

18.8拆箱转换 311

18.9用户自定义转换 312

18.9.1用户自定义转换的约束 312

18.9.2用户自定义转换的示例 313

18.9.3计算用户自定义转换 314

18.9.4多步用户自定义转换的示例 315

18.10 is运算符 316

18.11 as运算符 317

第19章 泛型 318

19.1什么是泛型 318

19.2 C#中的泛型 320

19.3泛型类 321

19.4声明泛型类 321

19.5创建构造类型 322

19.6创建变量和实例 323

19.6.1使用泛型的栈的示例 324

19.6.2比较泛型和非泛型栈 325

19.7类型参数的约束 326

19.7.1 Where子句 327

19.7.2约束类型和次序 327

19.8泛型方法 328

19.8.1声明泛型方法 328

19.8.2调用泛型方法 329

19.8.3泛型方法的示例 330

19.9扩展方法和泛型类 331

19.10泛型结构 332

19.11泛型委托 332

19.12泛型接口 334

19.12.1使用泛型接口的示例 335

19.12.2泛型接口的实现必须唯一 336

19.13泛型的协变和逆变 337

19.13.1接口的协变和逆变 341

19.13.2有关变化的更多内容 342

第20章 枚举数和迭代器 344

20.1枚举数和可枚举类型 344

20.1.1使用foreach语句 344

20.1.2枚举数类型 345

20.2使用IEnumerator接口 346

20.3 IEnumerable接口 349

20.4不实现接口的枚举数 351

20.5泛型枚举接口 352

20.6IEnumerator﹤T﹥接口 352

20.7IEnumerable﹤T﹥接口 354

20.8迭代器 355

20.8.1迭代器块 356

20.8.2使用迭代器来创建枚举数 357

20.8.3使用迭代器来创建可枚举类型 358

20.9常见迭代器模式 360

20.10产生可枚举类型和枚举数 360

20.11产生多个可枚举类型 361

20.12产生多个枚举数 362

20.13迭代器实质 363

第21章 介绍LINQ 365

21.1什么是LINQ 365

21.2 LINQ提供程序 366

21.3查询语法和方法语法 368

21.4查询变量 369

21.5查询表达式的结构 370

21.5.1 from子句 371

21.5.2 join子句 372

21.5.3什么是联结 373

21.5.4查询主体中的from let where片段 375

21.5.5 orderby子句 378

21.5.6 select group子句 378

21.5.7查询中的匿名类型 380

21.5.8 group子句 380

21.5.9查询延续 382

21.6标准查询运算符 383

21.6.1查询表达式和标准查询运算符 384

21.6.2标准查询运算符的签名 385

21.6.3委托作为参数 386

21.6.4 LINQ预定义的委托类型 387

21.6.5使用委托参数的示例 388

21.6.6使用Lambda表达式参数的示例 388

21.7 LINQ to XML 390

21.7.1标记语言 390

21.7.2 XML基础 390

21.7.3 XML类 391

21.7.4使用XML树的值 394

21.7.5使用XML属性 397

21.7.6节点的其他类型 400

21.7.7使用LINQ to XML的LINQ查询 401

第22章 异步编程简介 404

22.1进程、线程以及异步编程 404

22.1.1多线程处理带来的问题 405

22.1.2多线程处理的复杂度 405

22.2并行循环 406

22.3 BackgroundWorker类 408

22.3.1 BackgroundWorker类的示例代码 411

22.3.2 BackgroundWorker用于WPF程序的例子 414

22.4异步编程模式 416

22.5 BeginInvoke和EndInvoke 417

22.5.1等待一直到结束模式 418

22.5.2 AsyncResult类 419

22.5.3轮询模式 420

22.5.4回调模式 421

22.6计时器 423

第23章 预处理指令 426

23.1什么是预处理指令 426

23.2基本规则 426

23.3 #define和#undef指令 427

23.4条件编译 428

23.5条件编译结构 429

23.6诊断指令 431

23.7行号指令 431

23.8区域指令 432

23.9#pragma warning指令 433

第24章 反射和特性 434

24.1元数据和反射 434

24.2 Type类 435

24.3获取Type对象 436

24.4什么是特性 438

24.5应用特性 439

24.6预定义的保留的特性 439

24.6.1 Obsolete特性 439

24.6.2 Conditional特性 440

24.6.3预定义的特性 441

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

24.7.1多个特性 442

24.7.2其他类型的目标 442

24.7.3全局特性 443

24.8自定义特性 443

24.8.1声明自定义特性 444

24.8.2使用特性的构造函数 444

24.8.3指定构造函数 444

24.8.4使用构造函数 445

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

24.8.6限制特性的使用 446

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

24.9访问特性 448

24.9.1使用IsDefined方法 448

24.9.2使用GetCustomAttribute方法 449

第25章 其他主题 450

25.1概述 450

25.2字符串 450

25.2.1使用StringBuilder类 451

25.2.2格式化数字字符串 452

25.3把字符串解析为数据值 455

25.4关于可空类型的更多内容 457

25.4.1使用空接合运算符 458

25.4.2使用可空用户自定义类型 459

25.5 Main方法 460

25.6文档注释 461

25.6.1插入文档注释 462

25.6.2使用其他XML标签 463

25.7嵌套类型 463

25.7.1嵌套类的示例 464

25.7.2可见性和嵌套类型 465

25.8和COM的互操作 467