《Head First C# 第3版》PDF下载

  • 购买积分:24 如何计算积分?
  • 作  者:(美)安德鲁·施特尔曼(Andrew Stellman),(美)詹尼弗·格林
  • 出 版 社:北京:中国电力出版社
  • 出版年份:2016
  • ISBN:9787512385337
  • 页数:903 页
图书介绍:《Head First C#(第三版)》是学习使用C#、XAML、.NET Framework和Visual Studio编程的绝佳途径,会让你有全新的学习体验。这本书专门针对你的大脑特别制作,从第1章开始就会把你牢牢吸引住,你会在第1章中构建一个功能完备的视频游戏。接下来,你会学习类和面向对象编程、绘制图形和动画、用LINQ查询数据,还可以串行化到文件。

1用C#构建应用快速构建酷炫程序! 2

为什么你要学C# 2

C#和Visual Studio IDE让很多事情变得容易 3

你在Visual Studio中这样做…… 4

Visual Studio会为你这样做…… 4

外星人入侵! 8

只有你能拯救地球 9

以下是你要构建的目标 10

从一个空应用开始 12

为页面建立网格 18

在网格中增加控件 20

使用属性改变控件的外观 22

控件让游戏动起来 24

你已经为游戏做好了准备 29

接下来要做什么 30

增加一个具体做事情的方法 31

为方法填入代码 32

完成方法,运行程序 34

这是你目前为止所做的 36

增加定时器管理游戏 38

让Start按钮起作用 40

运行程序看看进展如何 41

增加代码让控件与玩家交互 42

把人拖到敌人身上,结束游戏 44

现在可以真正玩你的游戏了 45

让敌人看起来更像外星人 46

增加一个启动画面和瓷块 47

发布你的应用 48

使用Remote Debugger越狱应用 49

开始远程调试 50

2都只是代码幕后的故事 54

当你这么做时…… 54

……IDE会这么做 55

程序从哪里来 56

IDE帮你编写代码 58

程序剖析 60

两个类可以在同一个命名空间 65

程序使用变量处理数据 66

C#使用我们熟悉的数学符号 68

使用调试工具查看变量的变化 69

循环就是周而复始反复完成一个动作 71

if/else语句做决策 72

从头开始构建一个应用 73

让各个按钮做些事情 75

建立条件,查看条件是否为true 76

Windows桌面应用很容易构建 87

面向Windows Desktop重构你的应用 88

你的桌面应用知道从哪里开始 92

可以改变程序的入口点 94

在IDE中完成修改,同时也在修改你的代码 96

3对象:我们的方向!让代码更合理 102

Mike如何考虑问题 102

Mike的汽车导航系统如何考虑问题 103

Mike的Navigator类有一些设置和改变路线的方法 104

使用前面所学的知识构建一个使用类的程序 105

Mike有一个好主意 107

Mike可以使用对象来解决他的问题 108

使用类来建立对象 109

由一个类创建新对象时,称为这个类的一个实例 110

更好的解决方案……利用对象! 111

实例使用字段来跟踪状态 116

来创建一些实例! 117

感谢内存 118

程序要做什么 119

使用合适的类名和方法名使代码更直观 120

为类提供一个自然的结构 122

类图可以帮助你组织类,让它们更有意义 124

构建一个类来处理某些人 128

为这些人创建一个工程 129

建立一个窗体与这些人交互 130

还有更容易的方法来初始化对象 133

4类型与引用现在是上午10:00,你知道你的数据在哪里吗? 142

变量的类型决定了它能存储哪种数据 142

变量就像数据外卖杯 144

10磅数据装进5磅的包里 145

即使数字的大小合适,也不能随意赋给任意变量 146

强制转换一个过大的值时,C#会自动调整 147

C#自动完成一些强制类型转换 148

调用一个方法时,实参必须与形参的类型兼容 149

调试里程计算器 153

结合=和操作符 154

对象也使用变量 155

用引用变量指示对象 156

引用就像对象的标签 157

如果没有任何引用,对象就会被垃圾回收 158

多个引用及其副作用 160

两个引用意味着有两个途径来改变一个对象的数据 165

一种特殊情况:数组 166

数组还可以包含一组引用变量 167

欢迎品尝Sloppy Joe餐厅物美价廉的三明治! 168

对象使用引用交谈 170

前人未至之境 171

构建一个打字游戏 176

控件也是对象,与其他对象一样 180

C#实验室1赛狗日 188

规范:构建一个赛狗模拟系统 188

完成的作品 196

5封装让你的隐私……属于你个人 198

Kathleen是一个策划人 198

预算工具要做些什么? 199

你要为Kathleen构建一个程序 200

Kathleen的测试 206

每个选择都应当单独计算 208

很容易无意识地误用对象 210

封装意味着保证类中的一些数据是私有的 211

使用封装控制对类方法和字段的访问 212

但是RealName字段真的得到了保护吗? 213

私有字段和方法只能从类的内部访问 214

封装保证数据干净 222

属性使封装更容易 223

构建一个应用测试Farmer类 224

使用自动属性完成这个类 225

如果想改变单位饲料数呢? 226

使用构造函数初始化私有字段 227

6继承对象的家族树 238

Kathleen也承办生日聚会 238

需要一个BirthdayParty类 239

构建聚会规划工具2.0版 240

还有一个问题……如果人数超过12,聚会能额外收取 247

100吗? 247

类使用继承时,只需要写一次代码 248

建立类模型:从一般到特定 249

如何设计一个动物园模拟系统? 250

使用继承避免子类中出现重复代码 251

不同的动物会发出不同的声音 252

想想如何对动物分组 253

创建类层次结构 254

每个子类都扩展其基类 255

使用冒号继承一个基类 256

我们知道继承会为子类增加基类的字段、属性和方法…… 259

子类可以覆盖方法来改变或替换它继承的方法 260

只要能使用基类,就可以使用它的某个子类 261

子类可以隐藏超类中的方法 268

使用override和virtual关键字来继承行为 270

子类可以使用base关键字访问其基类 272

基类有构造函数,子类也需要有构造函数 273

现在准备完成Kathleen的任务! 274

构建一个蜂巢管理系统 279

如何构建蜂巢管理系统 280

7接口与抽象类让类信守承诺 294

再来看蜂巢问题 294

可以使用继承为不同类型的蜜蜂创建相应的类 295

接口告诉类必须实现某些方法和属性 296

使用interface关键字定义接口 297

现在可以创建两项工作都胜任的NectarStinger实例 298

实现接口的类必须包括接口的所有方法 299

使用接口做个小练习 300

不能实例化接口,不过可以引用接口 302

接口引用类似对象引用 303

可以使用“is”查看一个类是否实现了某个接口 304

接口可以继承其他接口 305

RoboBee 4000可以完成工蜂的工作,而且不需要消耗珍贵的蜂蜜 306

CoffeeMaker也是一个Appliance 308

对象和接口的向上强制转换 309

向下强制转换允许你把家用电器变回咖啡机 310

接口也可以向上和向下强制转换 311

不只是公共和私有 315

访问修饰符改变可见性 316

有些类不能实例化 319

抽象类就像类和接口之间的一个过渡 320

正像我们说的,有些类不能实例化 322

抽象方法没有方法体 323

致命的死亡菱形! 328

多态表示一个对象可以有多种不同形态 331

8枚举与集合存储大量数据 352

字符串并不适于存储所有类型的数据 352

Enum枚举允许处理一组合法值 353

枚举允许用名字表示数字 354

数组很难处理 358

利用List可以很容易地存储……任何事物的集合 359

List比数组更灵活 360

List会动态伸缩 363

泛型可以存储任何类型 364

集合初始化方法类似于对象初始化方法 368

列表很容易,但排序可能很困难 370

IComparable〈Duck〉帮助列表对鸭子排序 371

使用IComparer告诉List如何排序 372

创建比较对象的一个实例 373

IComparer可以完成复杂的比较 374

覆盖ToString()方法让对象自我描述 377

更新foreach循环,让Duck和Card自行显示 378

写foreach循环时,就是在使用IEnumerable〈T〉 379

使用IEnumerable可以向上强制转换整个列表 380

可以建立你自己的重载方法 381

使用字典存储键和值 387

字典功能通览 388

构建一个使用字典的程序 389

还有更多集合类型…… 401

队列是FIFO——先进先出 402

栈是LIFO——后进先出 403

9读写文件为我保存最后一个字节! 410

.NET使用流读写数据 410

不同的流读写不同的数据 411

FileStream向文件读写字节 412

3个简单步骤向文件写文本 413

恶魔Swindler又要发动一个邪恶计划 414

使用两个对象读写 417

数据可以经过多个流 418

使用内置对象弹出标准对话框 421

对话框也是WinForms控件 422

使用内置File和Directory类处理文件和目录 424

使用文件对话框打开和保存文件(只需要几行代码) 427

IDisposable确保适当地撤销对象 429

利用using语句避免文件系统错误 430

使用switch语句做出正确的选择 437

增加一个重载的Deck()构造函数,从文件读入一副牌 439

对象串行化时,它引用的所有对象也要串行化…… 443

利用串行化可以一次读写整个对象图 444

.NET使用Unicode存储字符和文本 449

C#可以使用字节数组移动数据 450

使用Binary Writer写二进制数据 451

还可以手动读写串行化文件 453

找出文件的差别,并使用这些信息修改文件 454

处理二进制文件可能很麻烦 455

使用文件流构建一个十六进制转储工具 456

使用Stream.Read()从流读取字节 458

C#实验室2冒险游戏 466

规范:构建一个冒险游戏 466

好戏就要开始了! 486

10用XAML设计Windows Store应用让你的应用更上一个台阶 488

Brian在运行Windows 8 488

Windows Forms使用IDE建立的一个对象图 494

使用IDE研究对象图 497

Windows Store应用使用XAML创建UI对象 498

把Go Fish!窗体重新设计为一个Windows Store应用页面 500

页面布局从控件开始 502

行和列可以调整来适应页面大小 504

使用网格系统建立应用页面布局 506

数据绑定将XAML页面与类连接起来 512

XAML控件可以包含文本……以及更多 514

使用数据绑定为Sloppy Joe构建一个更棒的菜单 516

使用静态资源在XAML中声明对象 522

使用数据模板显示对象 524

INotifyPropertyChanged允许绑定对象发送更新 526

修改MenuMaker来通知GeneratedDate属性有变化 527

11async、await和数据契约串行化抱歉打断一下 536

Brian的文件遇到点麻烦 536

Windows Store应用使用await来更好地响应 538

使用FileIO类读写文件 540

构建一个不那么简单的文本编辑器 542

数据契约是对象数据的一个抽象定义 547

使用async方法查找和打开文件 548

KnownFolders帮助你访问标准文件夹 550

整个对象图都串行化到XML 551

将Guy对象通过流写入应用的本地文件夹 552

测试你的Guy Serializer应用 556

使用Task从一个async方法调用另一个async方法 557

为Brian构建一个新的借口管理应用 558

分离页面、借口和借口管理系统 559

为借口管理系统创建主页面 560

为主页面增加应用条 561

构建ExcuseManager类 562

增加页面的底层代码 564

12异常处理救火太老套 570

Brian希望他的借口是移动的 570

程序抛出一个异常时,.NET会生成一个Exception对象 574

Brian的代码出了意外 576

所有异常对象都继承了Exception 578

调试工具可以帮助跟踪和避免代码中的异常 579

使用IDE的调试工具找出借口管理系统哪里出了问题 580

哎呀,代码还是有问题…… 583

用try和catch处理异常 585

想调用的方法有风险会发生什么? 586

使用调试工具跟踪try/catch流 588

如果有些代码总要运行,可以使用一个fiinally块 590

使用Exception对象得到问题的有关信息 595

使用多个catch块处理多种类型的异常 596

一个类抛出异常,可以由另一个类中的方法捕获这个异常 597

避免大量问题的一种简便方法:利用using可以免费使用try和fiinally 601

避免异常:实现IDisposable完成自己的清理 602

史上最糟糕的catch块:全能型+注释 604

关于异常处理的一些简单想法 606

13CAPTAIN AMAZING对象之列 618

你的最后机会……对象的最终化方法 618

最终化方法到底什么时候运行? 619

Dispose()处理using,最终化方法处理垃圾回收 620

最终化方法不能依赖于稳定性 622

让对象在Dispose()中自行串行化 623

struct看起来像是一个对象…… 627

……但不是对象 627

值要复制,引用要指定 628

struct是值类型;对象是引用类型 629

栈与堆:再谈谈内存 631

用out参数让方法返回多个值 634

使用ref修饰符按引用传递 635

使用可选参数设置默认值 636

需要不存在的值时可以使用可为空的类型 637

可为空的类型可以让程序更健壮 638

“Captain” Amazing……还不够 641

扩展方法为现有类增加新行为 642

扩展一个基本类型:string 644

14用LINQ查询数据和构建应用掌控你的数据 650

Jimmy是Captain Amazing的忠实粉丝…… 650

……不过他的收藏杂乱无章 651

LINQ可以从多个来源获取数据 652

已经为LINQ建立了.NET集合 653

LINQ使查询很容易 654

LINQ很简单,但是查询不一定简单 655

Jimmy得到一些帮助 658

开始为Jimmy构建一个应用 660

使用new关键字创建匿名类型 663

LINQ是个多面手 666

为Jimmy的应用增加新查询 668

LINQ可以将结果合并分组 673

将Jimmy漫画书的价格分组 674

使用join将两个集合合并到一个序列 677

Jimmy省了一大笔钱 678

使用语义变焦导航数据 684

为Jimmy的应用增加语义变焦 686

你让Jimmy非常高兴 691

IDE的Split App模板可以帮你构建应用导航数据 692

15事件与委托没有监视时,代码在做什么 702

希望你的对象自己考虑问题吗? 702

不过对象怎么知道要做出响应呢? 702

出现一个事件时……对象会监听 703

一个对象产生事件,其他对象监听…… 704

然后,其他对象处理这个事件 705

把各个部分连起来 706

IDE会为你自动创建事件处理方法 710

泛型EventHandler允许你定义自己的事件类型 716

Windows Forms使用多个事件 717

一个事件,多个处理方法 718

Windows Store应用使用事件完成进程生命期管理 720

为Jimmy的漫画书应用增加进程生命期管理 721

XAML控件使用路由事件 724

创建一个应用来研究路由事件 725

连接事件发送者和事件接收者 730

委托代表一个具体的方法 731

委托的实际使用 732

对象可以订购事件…… 735

使用回调控制谁来监听 736

回调只是一种使用委托的方法 738

可以对MessageDialog命令使用回调 740

使用委托利用Windows Setting charm 742

16用 MVVM模式建立应用架构好应用的正反面 746

Head First Basketball Conference篮球联赛需要一个应用 746

不过对于如何构建这个应用他们能达成一致吗? 747

为绑定还是为处理数据而设计? 748

MVVM允许你针对绑定以及数据进行设计 749

使用MVVM模式开始构建篮球赛阵容应用 750

用户控件允许你创建你自己的控件 753

裁判需要一个秒表 761

MVVM意味着要考虑应用的状态 762

开始构建秒表应用的模型 763

事件提醒应用的其余部分有状态发生变化 764

为一个简单的秒表构建视图 765

增加秒表视图模型 766

转换器自动转换值完成绑定 770

转换器可以处理多种不同类型 772

可视化状态使控件对改变做出响应 778

使用DoubleAnimation完成double值动画 779

使用对象动画完成对象值的动画 780

使用同样的视图模型构建一个模拟秒表 781

UI控件也可以用C#代码实例化 786

C#也可以构建“真正的”动画 788

创建一个用户控件来完成图片动画 789

让你的蜜蜂在页面上飞起来 790

使用ItemsPanelTemplate将控件绑定到Canvas 793

祝贺你!(不过还没有结束……) 806

C#实验室3 入侵者 808

经典的视频游戏 808

还有很多可以做 829

17额外奖励的工程!构建一个Windows Phone游戏 832

Bee Attack! 832

开始之前 833

i附录其他:这本书最想介绍的11大内容 846

1.关于Windows Store 846

2.基础知识 848

3.命名空间和程序集 854

4.使用BackgroundWorker保证WinForms的响应性 858

5.Type类和GetType() 861

6.相等性、IEquatable和Equals() 862

7.使用yield return创建可枚举的对象 865

8.重构 868

9.匿名类型、匿名方法和lambda表达式 870

10.LINQ to XML 872

11.Windows表现基础库 874

你知道C#和.NET Framework的这些功能吗? 875