您好,欢迎光临有路网!
C#入门经典(第6版)
QQ咨询:
有路璐璐:

C#入门经典(第6版)

  • 作者:(美) 沃森
  • 出版社:清华大学出版社
  • ISBN:9787302343394
  • 出版日期:2014年01月01日
  • 页数:868
  • 定价:¥98.00
  • 分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    内容提要
    《C#入门经典 系列是屡获殊荣的C#名著和**畅销书。*新版的 C#入门经典(第6版) 面向编程新手,全面介绍使用C# 2012和.NET Framework编写程序的基础知识。本书****的作者团队与您分享多年积累的C#和.NET Framework使用经验,首先简明扼要地介绍这两种技术,解释其含义、相互关系以及使用原因,然后循序渐进地讨论编程基础知识、Web编程、桌面编程以及数据访问技术。本书的讲解详明透彻,以通俗易懂的方式分步骤解析大量基础性示例,为您提供了在实践中锻炼运用新学知识的机会。
    主要内容
    ◆ 介绍编程基础知识,如变量、流程控制和面向对象编程
    ◆ 着重介绍初学者在编写C#程序时*常用的工具:Visual Studio 2012中的Visual C# 2012开发环境
    ◆ 阐述调试和错误处理
    ◆ 详细讲解集合、比较和转换,探讨C#语言的新增功能
    ◆ 深入分析WPF以及其他可用于创建和部署桌面应用程序的重要技术
    ◆ 探讨Windows Store应用程序
    ◆ 介绍ASP.NET Web编程和Web应用程序的部署
    ◆ 分析文件系统数据、XML和LINQ
    文章节选
    1.1 .NET Framework的含义
    .NET Framework(现在是版本4.5)是Microsoft为开发应用程序而创建的一个具有革命意义的平台。这句话*有趣的地方在于它的广义性,但这是有原因的。首先,注意这句话没有说“在Windows操作系统上开发应用程序”。尽管.NET Framework的Microsoft版本运行在Windows操作系统和Windows Phone操作系统上,但它也有运行在其他操作系统上的版本,例如Mono,它是.NET Framework的开源版本(包含C#编译器),该版本可以运行在几个操作系统上,包括各种Linux版本和Mac OS。另外,Mono还有一些版本可以运行在iPhone(MonoTouch)和Android(Mono for Android,也称为MonoDroid)智能手机上。使用.NET Framework的一个重要原因是它可以作为集成各种操作系统的方式。
    另外,上面给出的.NET Framework定义并未限制应用程序的类型。这是因为本来就没有限制。可以使用.NET Framework创建桌面应用程序、Windows Store应用程序、Web应用程序、Web服务和其他各种类型的应用程序。另外注意,对于Web应用程序,按照定义,它们是多平台的应用程序,因为任何带有Web浏览器的系统都可以访问它们。
    .NET Framework的设计方式确保它可以用于各种语言,包括本书介绍的C#语言,以及C++、Visual Basic、JScript甚至一些旧语言,如COBOL。为此,还推出了这些语言的.NET版本,目前还在不断推出更多版本。所有这些语言都可以访问.NET Framework,它们彼此之间还可以通信。C#开发人员可以使用Visual Basic程序员编写的代码,反之亦然。
    所有这些提供了意想不到的多样性,这也是.NET Framework具有诱人前景的部分原因。
    1.1.1 .NET Framework的内容
    .NET Framework主要包含一个庞大的代码库,可以在客户语言(如C#)中通过面向对象编程技术(OOP)来使用这些代码。这个库分为多个不同的模块,这样就可以根据希望得到的结果来选择使用其中的各个部分。例如,一个模块包含Windows应用程序的构件,另一个模块包含网络编程的代码块,还有一个模块包含Web开发的代码块。一些模块还分为更具体的子模块,例如,在Web开发模块中,有用于建立Web服务的子模块。
    其目的是,不同操作系统可以根据各自的特性,支持其中的部分或全部模块。例如,智能手机支持所有的核心.NET功能,但不需要某些更**的模块。
    部分.NET Framework库定义了一些基本类型。类型是数据的一种表达方式,指定*基本类型(如32位带符号的整数)有助于使用.NET Framework的各种语言之间进行交互操作。这称为通用类型系统(Common Type System,CTS)。
    除提供这个库外,.NET Framework还包含.NET公共语言运行库(Common Language Runtime,CLR),它负责管理用.NET库开发的所有应用程序的执行。
    1.1.2 使用.NET Framework编写应用程序
    使用.NET Framework编写应用程序,就是使用.NET代码库编写代码(使用支持Framework的任何一种语言)。本书用VS进行开发,VS是一种强大的集成开发环境,支持C#(以及托管和非托管C++、Visual Basic和其他一些语言)。这个环境的优点是便于把.NET功能集成到代码中。我们创建的代码完全是C#代码,但使用了.NET Framework,并在需要时利用了VS中的其他工具。
    为执行C#代码,必须把它们转换为目标操作系统能够理解的语言,即本机代码(native code)。这种转换称为编译代码,由编译器执行。但在.NET Framework下,此过程包括两个阶段。
    1. CIL和JIT
    在编译使用.NET Framework库的代码时,不是立即创建专用于操作系统的本机代码,而是把代码编译为通用中间语言(Common Intermediate Language,CIL)代码,这些代码并非专门用于任何一种操作系统,也非专门用于C#。其他.NET语言,如Visual Basic .NET也会在**阶段编译为这种语言。开发C#应用程序时,这个编译步骤由VS完成。
    显然,要执行应用程序,必须完成更多工作,这是Just-In-Time(JIT)编译器的任务,它把CIL编译为专用于OS和目标机器结构的本机代码。这样OS才能执行应用程序。这里编译器的名称Just-In-Time反映了CIL代码仅在需要时才编译的事实。这种编译可以在应用程序的运行过程中动态发生,不过开发人员一般不需要关心这个过程。除非要编写性能十分关键的代码,否则知道这个编译过程会在后台自动进行,并不需要人工干预就可以了。
    过去,常常需要把代码编译为几个应用程序,每个应用程序都用于特定的操作系统和CPU结构。这通常是一种优化形式(例如,为了让代码在AMD芯片组上运行得更快),有时则是非常重要的(例如,使应用程序可以同时工作在Win9x和WinNT/2000环境下)。现在就不必要了,因为JIT编译器使用CIL代码,而CIL代码是独立于计算机、操作系统和CPU的。目前有几种JIT编译器,每种编译器都用于不同的结构,CIL会使用合适的编译器创建所需的本机代码。
    这样,开发人员需要做的工作就比较少了。实际上,可以忽略与系统相关的细节,将注意力集中在代码的功能上就够了。




    2. 程序集
    在编译应用程序时,所创建的CIL代码存储在一个程序集中。程序集包括可执行的应用程序文件(这些文件可以直接在Windows上运行,不需要其他程序,其扩展名是.exe)和其他应用程序使用的库(其扩展名是.dll)。
    除包含CIL外,程序集还包含元信息(即程序集中包含的数据的信息,也称为元数据)和可选的资源(CIL使用的其他数据,例如,声音文件和图片)。元信息允许程序集是完全自描述的。不需要其他信息就可以使用程序集,也就是说,我们不会遇到没有把需要的数据添加到系统注册表中这样的问题,而这在使用其他平台进行开发时这个问题常常出现。
    因此,部署应用程序就非常简单了,只需把文件复制到远程计算机上的目录下即可。因为不需要目标系统上的其他信息,所以只需从该目录中运行可执行文件即可(假定安装了.NET CLR)。
    当然,不必把运行应用程序需要的所有信息都安装到一个地方。可以编写一些代码来执行多个应用程序所要求的任务。此时,通常把这些可重用的代码放在所有应用程序都可以访问的地方。在.NET Framework中,这个地方是全局程序集缓存(Global Assembly Cache,GAC),把代码放在这个缓存中是很简单的,只需把包含代码的程序集放在包含该缓存的目录中即可。
    3. 托管代码
    在将代码编译为CIL,再用JIT编译器将它编译为本机代码后,CLR的任务尚未全部完成,还需要管理正在执行的用.NET Framework编写的代码(这个执行代码的阶段通常称为运行时(runtime))。即CLR管理着应用程序,其方式是管理内存、处理**性以及允许进行跨语言调试等。相反,不受CLR控制运行的应用程序属于非托管类型,某些语言(如C++)可以用于编写此类应用程序,例如,访问操作系统的低级功能。但是在C#中,只能编写在托管环境下运行的代码。我们将使用CLR的托管功能,让.NET处理与操作系统的任何交互。
    4. 垃圾回收
    托管代码*重要的一个功能是垃圾回收(garbage collection)。这种.NET方法可确保应用程序不再使用某些内存时,就会完全释放这些内存。在.NET推出以前,这项工作主要由程序员负责,代码中的几个简单错误会把大块内存分配到错误的地方,使这些内存神秘失踪。这通常意味着计算机的速度逐渐减慢,*终导致系统崩溃。
    .NET垃圾回收会定期检查计算机内存,从中删除不再需要的内容。执行垃圾回收的时间并不固定,可能一秒钟内会进行数千次的检查,也可能几秒钟才检查一次,不过一定会进行检查。
    这里要给程序员一些提示。因为在不可预知的时间执行这项工作,所以在设计应用程序时,必须留意这一点。需要许多内存才能运行的代码应自己完成清理工作,而不是坐等垃圾回收,但这不像听起来那样难。
    5. 把它们组合在一起
    在继续学习之前,先总结一下上述创建.NET应用程序所经历的步骤:
    (1) 使用某种.NET兼容语言(如C#)编写应用程序代码,如图1-1所示。
    (2) 把代码编译为CIL,存储在程序集中,如图1-2所示。

    图 1-1 图 1-2
    (3) 在执行代码时(如果这是一个可执行文件,就自动运行,或者在其他代码使用它时运行),首先必须使用JIT编译器将代码编译为本机代码,如图1-3所示。
    图 1-3
    (4) 在托管的CLR环境下运行本机代码,以及其他应用程序或进程,如图1-4所示。
    图 1-4
    6. 链接
    在上述过程中还有一点要注意。在第(2)步中编译为CIL的C#代码未必包含在单独文件中,可以把应用程序代码放在多个源代码文件中,再把它们编译到一个程序集中。这个过程称为链接(linking),是非常有用的。原因是处理几个较小的文件比处理一个大文件要简单得多。可以把逻辑上相关的代码分解到一个文件中,以便单独进行处理,这也更便于在需要时找到特定的代码块,让开发小组把编程工作分解为一些可管理的块,让每个人编写一小块代码,而不会破坏已编写好的代码部分或其他人正在处理的部分。
    1.2 C#的含义
    如上所述,C#是可用于创建要运行在.NET CLR上的应用程序的语言之一,它从C和C++语言演化而来,是Microsoft专门为使用.NET平台而创建的。因为C#是近期发展起来的,所以吸取了以往的教训,考虑了其他语言的许多优点,并解决了它们的问题。
    使用C#开发应用程序比使用C++简单,因为其语法更简单。但是,C#是一种强大的语言,在C++中能完成的任务几乎都能利用C#完成。虽然如此,C#中与C++**功能等价的功能(例如直接访问和处理系统内存),只能在标记为“unsafe”的代码中使用。这个**编程技术存在潜在威胁(正如它的名称所暗示的),因为它可能覆盖系统中重要的内存块,导致严重后果。因此,本书不讨论这个问题。
    C#代码常比C++略长一些。这是因为C#是一种类型**的语言(与C++不同)。在外行人看来,这表示一旦为某个数据指定了类型,就不能转换为另一个不相关的类型。所以,在类型之间转换时,必须遵守严格的规则。执行相同的任务时,用C#编写的代码通常比用C++编写的代码长。但C#代码更健壮,调试起来也比较简单,.NET始终可以随时跟踪数据的类型。在C#中,不能完成诸如“把4字节的内存分配给这个数据后,我们使其有10个字节长,并把它解释为X”等任务,但这并不是一件坏事。
    C#只是用于.NET开发的一种语言,但它是*好的一种语言。C#的优点是,它是**彻头彻尾为.NET Framework设计的语言,是在移植到其他操作系统上的.NET版本中使用的主要语言。要使诸如VB.NET的语言尽可能类似于其以前的语言,且仍遵循CLR,就不能完全支持.NET代码库的某些功能,至少需要不常见的语法。但C#能使用.NET Framework代码库提供的每种功能。而且,.NET的每个新版本都在C#语言中添加了新功能,满足了开发人员的要求,使之更强大。
    1.2.1 用C#能编写什么样的应用程序
    如前所述,.NET Framework没有限制应用程序的类型。C#使用的是.NET Framework,所以也没有限制应用程序的类型。这里仅讨论几种常见的应用程序类型。
    桌面应用程序 这些应用程序(如Microsoft Office)具有我们很熟悉的Windows外观和操作方式,使用.NET Framework的Windows Presentation Foundation(WPF)模块就可以简便地生成这种应用程序。WPF模块是一个控件库,其中的控件(例如按钮、工具栏和菜单等)可用于建立Windows用户界面(UI)。
    Windows Store应用程序 这是Windows 8中新引入的一类应用程序。此类应用程序主要针对触摸设备设计,通常全屏运行,侧**在于简洁清晰。创建这类应用程序的方式有多种,包括使用WPF。
    Web应用程序 它们是一些Web页面,可以通过任何Web浏览器查看。.NET Framework包括一个动态生成Web内容的强大系统,允许进行个性化和实现**性等。这个系统称为Active Server Pages .NET(ASP.NET),我们可以使用C#通过Web Forms 创建ASP.NET应用程序。还可以使用Silverlight编写在浏览器内部运行的应用程序。
    WCF服务 这是一种灵活创建各种分布式应用程序的方式。使用WCF服务可以通过局域网或Internet交换几乎各种数据。无论使用什么语言创建WCF服务,也无论WCF服务驻留在什么系统上,都使用一样简单的语法。
    这些类型的应用程序也可能需要某种形式的数据库访问,这可以通过.NET Framework的Active Data Objects .NET(ADO.NET)部分、ADO.NET Entity Framework或C#的LINQ(Language Integrated Query)功能来实现。也可以使用许多其他资源,例如,创建联网组件、输出图形、执行复杂数学任务的工具。
    1.2.2 本书中的C#
    本书第Ⅰ部分介绍C# 语言的语法和用法,但不过分强调.NET Framework。这是必需的,因为我们不能没有一点儿C# 编程基础就使用.NET Framework。首先介绍一些比较简单的内容,把较复杂的面向对象编程(Object-Oriented Programming,OOP)论题放在基础知识的后面论述。假定读者没有一点儿编程的知识,这些是首要的规则。
    学习了基础知识后,本书还将介绍如何开发更复杂、更有用的应用程序。本书的第Ⅱ部分将讨论桌面和Windows Store应用程序编程,第Ⅲ部分将研究Web应用程序编程,第Ⅳ部分将讲述数据访问(对数据库、文件系统和XML数据的访问)和LINQ,第Ⅴ部分将介绍其他一些有趣的.NET论题。
    1.3 Visual Studio 2012
    本书使用Visual Studio 2012开发工具进行所有的C#编程,包括简单的命令行应用程序,乃至较复杂的项目类型。VS不是开发C#应用程序所必需的开发工具或集成开发环境(IDE),但使用它可以使任务更简单一些。如果愿意的话,可在基本的文本编辑器(如常见的记事本)中处理C#源代码文件,再使用.NET Framework中包含的命令行编译器把代码编译到程序集中。但是,为什么不使用功能完备的IDE呢?
    下面列出一些使VS成为.NET开发**工具的功能。
    VS可以自动执行编译源代码的步骤,同时可以完全控制编译过程中使用的任何选项。
    VS文本编辑器为VS支持的语言(包括C#)量身定制,这样就可以智能检测错误,在输入代码时给出合适的**代码,这个功能称为IntelliSense。
    VS包括XAML、ASP.NET及其他UI语言的设计器,允许UI元素的简单拖放设计。
    在C#中,许多类型的项目都可用已有的“样板”代码来创建,不需要从头开始。各种代码文件通常已经准备好了,减少了从头开始一个项目所用的时间。
    VS包括几个可自动执行常见任务的向导,其中很多任务可在已有的文件中添加合适的代码,在某些情况下,你甚至不需要考虑语法的正确性。
    VS包含许多强大的工具,可以显示项目中的元素并允许在其中导航,这些元素可以是C#源代码文件,也可以是其他资源,例如位图图像或声音文件。
    除了在VS中编写应用程序外,还可以创建部署项目,以便为客户提供代码,并使客户方便地完成安装。
    在开发项目时,VS允许使用**调试技巧,例如,能在代码中一次调试一条指令,并监视应用程序的状态。
    C#还有许多功能,希望读者能掌握它们!
    1.3.1 Visual Studio Express 2012产品
    除Visual Studio 2012外,Microsoft还提供了几个更简单的开发工具,称为Visual Studio Express 2012产品。可以在http://www.microsoft.com/express上免费获得它们。
    各种Express产品可以创建所需的几乎所有C#应用程序。在功能上它们都是VS的删节版本,但外观和操作方式是一样的。尽管它们提供了VS的许多功能,但缺少一些重要功能;不过我们仍可以在学习本书的过���中使用它们。


    1.3.2 解决方案
    在使用VS开发应用程序时,可以通过创建解决方案来完成。在VS术语中,解决方案不仅是一个应用程序,它还包含项目,可以是WPF项目和Web应用程序项目等。但是,解决方案可以包含多个项目,这样,即使相关的代码*终在硬盘上的多个位置编译为多个程序集,也可以把它们组合到一个地方。
    这是非常有用的,因为它可以处理“共享”代码(这些代码放在GAC中),同时,应用程序也使用这段共享代码。在使用**的开发环境时,调试代码是非常容易的,因为可以在多个代码块中单步调试指令。
    1.4 小结
    本章简要介绍了.NET Framework,并讨论了如何轻松创建各种功能强大的应用程序。还探讨了把用C#等语言编写的代码转换为可运行的应用程序所需要做的工作,以及使用在.NET公共语言运行库下运行的托管代码有什么优点。
    本章还阐述了C#的实质,以及它与.NET Framework的关系,描述了进行C#开发时所使用的工具Visual Studio 2012。
    第2章将介绍如何运行一些C#代码,介绍基础知识,并集中讨论C#语言本身,而不是过多地讨论IDE的工作原理。
    目录
    目 录
    第Ⅰ部分 C# 语 言
    第1 章 C#简介 3
    1.1 .NET Framework 的含义 3
    1.1.1 .NET Framework 的内容 4
    1.1.2 使用.NET Framework 编写应用程序 4
    1.2 C#的含义7
    1.2.1 用C#能编写什么样的应用程序 7
    1.2.2 本书中的C# 8
    1.3 Visual Studio 2012 8
    1.3.1 Visual Studio Express 2012产品 9
    1.3.2 解决方案 9
    1.4 小结 9
    1.5 本章要点 10
    第2 章 编写C#程序 11
    2.1 Visual Studio 2012 开发环境 12
    2.2 控制台应用程序 14
    2.2.1 Solution Explorer 窗口 17
    2.2.2 Properties 窗口 18
    2.2.3 Error List 窗口 18
    2.3 桌面应用程序 19
    2.4 小结 22
    2.5 本章要点 22
    第3 章 变量和表达式 23
    3.1 C#的基本语法 24
    3.2 C#控制台应用程序的基本结构 26
    3.3 变量 27
    3.3.1 简单类型 28
    3.3.2 变量的命名 31
    3.3.3 字面值 33
    3.3.4 变量的声明和赋值 34
    3.4 表达式 35
    3.4.1 数学运算符 35
    3.4.2 赋值运算符 39
    3.4.3 运算符的优先级 39
    3.4.4 名称空间 40
    3.5 小结 43
    3.6 练习 43
    3.7 本章要点 44
    第4 章 流程控制 45
    4.1 布尔逻辑 45
    4.1.1 布尔赋值运算符 48
    4.1.2 按位运算符 49
    4.1.3 运算符优先级的更新 52
    4.2 goto 语句 53
    4.3 分支 54
    4.3.1 三元运算符 54
    4.3.2 if 语句 55
    4.3.3 switch 语句 58
    4.4 循环 61
    4.4.1 do 循环 62
    4.4.2 while 循环 64
    4.4.3 for 循环 66
    4.4.4 循环的中断 70
    4.4.5 无限循环 71
    4.5 小结 72
    4.6 练习 72
    4.7 本章要点 73
    第5 章 变量的更多内容 75
    5.1 类型转换 75
    5.1.1 隐式转换 76
    5.1.2 显式转换 77
    5.1.3 使用Convert 命令进行显式转换 80
    5.2 复杂的变量类型 83
    5.2.1 枚举 83
    5.2.2 结构 87
    5.2.3 数组 89
    5.3 字符串的处理 95
    5.4 小结 100
    5.5 练习 100
    5.6 本章要点 101
    第6 章 函数 103
    6.1 定义和使用函数 104
    6.1.1 返回值 105
    6.1.2 参数 107
    6.2 变量的作用域 114
    6.2.1 其他结构中变量的作用域 116
    6.2.2 参数和返回值与全局数据 118
    6.3 Main()函数 119
    6.4 结构函数 121
    6.5 函数的重载 122
    6.6 委托 124
    6.7 小结 127
    6.8 练习 127
    6.9 本章要点 128
    第7 章 调试和错误处理 129
    7.1 Visual Studio 中的调试 130
    7.1.1 非中断(正常)模式下的调试 130
    7.1.2 中断模式下的调试 138
    7.2 错误处理 145
    7.2.1 try.catch.finally 146
    7.2.2 列出和配置异常 150
    7.2.3 异常处理的注意事项 151
    7.3 小结 152
    7.4 练习 152
    7.5 本章要点 152
    第8 章 面向对象编程简介 155
    8.1 面向对象编程的含义 156
    8.1.1 对象的含义 156
    8.1.2 一切皆对象 159
    8.1.3 对象的生命周期 159
    8.1.4 静态和实例类成员 160
    8.2 OOP 技术 161
    8.2.1 接口 161
    8.2.2 继承 163
    8.2.3 多态性 164
    8.2.4 对象之间的关系 166
    8.2.5 运算符重载 167
    8.2.6 事件 167
    8.2.7 引用类型和值类型 168
    8.3 桌面应用程序中的OOP 168
    8.4 小结 171
    8.5 练习 172
    8.6 本章要点 173
    第9 章 定义类 175
    9.1 C#中的类定义 175
    9.2 System.Object 180
    9.3 构造函数和析构函数 182
    9.4 Visual Studio 中的OOP 工具186
    9.4.1 Class View 窗口 186
    9.4.2 对象浏览器 187
    9.4.3 添加类 188
    9.4.4 类图 189
    9.5 类库项目 190
    9.6 接口和抽象类 193
    9.7 结构类型 195
    9.8 浅度和深度复制 197
    9.9 小结 198
    9.10 练习 198
    9.11 本章要点 199
    第10 章 定义类成员 201
    10.1 成员定义 201
    10.1.1 定义字段 202
    10.1.2 定义方法 202
    10.1.3 定义属性 203
    10.1.4 在类图中添加成员 208
    10.1.5 重构成员 211
    10.1.6 自动属性 212
    10.2 类成员的其他主题 212
    10.2.1 隐藏基类方法 212
    10.2.2 调用重写或隐藏的基类方法 214
    10.2.3 嵌套的类型定义 215
    10.3 接口的实现 217
    10.4 部分类定义 221
    10.5 部分方法定义 222
    10.6 示例应用程序 224
    10.6.1 规划应用程序 224
    10.6.2 编写类库 224
    10.6.3 类库的客户应用程序 231
    10.7 Call Hierarchy窗口 232
    10.8 小结 233
    10.9 练习 233
    10.10 本章要点 234
    第11 章 集合、比较和转换 235
    11.1 集合 236
    11.1.1 使用集合 236
    11.1.2 定义集合 242
    11.1.3 索引符 243
    11.1.4 给CardLib 添加Cards 集合 245
    11.1.5 键控集合和IDictionary 248
    11.1.6 迭代器 250
    11.1.7 迭代器和集合 254
    11.1.8 深度复制 254
    11.1.9 给CardLib添加深度复制 257
    11.2 比较 258
    11.2.1 类型比较 258
    11.2.2 值比较 263
    11.3 转换 278
    11.3.1 重载转换运算符 278
    11.3.2 as运算符 279
    11.4 小结 280
    11.5 练习 281
    11.6 本章要点 282
    第12 章 泛型 283
    12.1 泛型的概念 284
    12.2 使用泛型 285
    12.2.1 可空类型 285
    12.2.2 System.Collections.Generic名称空间 292
    12.3 定义泛型类型 301
    12.3.1 定义泛型类 302
    12.3.2 定义泛型接口 313
    12.3.3 定义泛型方法 313
    12.3.4 定义泛型委托 315
    12.4 变体 315
    12.4.1 协变 316
    12.4.2 抗变 317
    12.5 小结 317
    12.6 练习 318
    12.7 本章要点 319
    第13 章 其他OOP 技术 321
    13.1 ::运算符和全局名称空间限定符 321
    13.2 定制异常 323
    13.3 事件 325
    13.3.1 事件的含义 325
    13.3.2 处理事件 326
    13.3.3 定义事件 328
    13.4 扩展和使用CardLib 336
    13.5 特性 344
    13.5.1 读取特性 344
    13.5.2 创建特性 345
    13.6 小结 346
    13.7 练习 347
    13.8 本章要点 347
    第14 章 C#语言的改进 349
    14.1 初始化器 350
    14.1.1 对象初始化器 350
    14.1.2 集合初始化器 352
    14.2 类型推理 355
    14.3 匿名类型 356
    14.4 动态查找 360
    14.4.1 动态类型 361
    14.4.2 IDynamicMetaObject-Provider 364
    14.5 **方法参数 365
    14.5.1 可选参数 365
    14.5.2 命名参数 367
    14.5.3 命名参数和可选参数的规则 371
    14.6 扩展方法 371
    14.7 Lambda 表达式 375
    14.7.1 复习匿名方法 375
    14.7.2 把Lambda 表达式用于匿名方法 376
    14.7.3 Lambda 表达式的参数 379
    14.7.4 Lambda 表达式的语句体 380
    14.7.5 Lambda 表达式用作委托和表达式树 381
    14.7.6 Lambda 表达式和集合 381
    14.8 调用方信息特性 384
    14.9 小结 386
    14.10 练习 387
    14.11 本章要点 388
    第15 章 基本桌面编程 393
    15.1 XAML 394
    15.1.1 关注点分离 394
    15.1.2 XAML 基础知识 395
    15.2 动手实践 396
    15.2.1 WPF 控件 397
    15.2.2 属性 398
    15.2.3 事件 401
    15.3 控件布局 405
    15.3.1 堆叠顺序 406
    15.3.2 对齐、边距、填充和尺寸 406
    15.3.3 Border 控件 407
    15.3.4 Canvas 控件 407
    15.3.5 DockPanel 控件 408
    15.3.6 StackPanel 控件 410
    15.3.7 Grid 控件 412
    15.4 游戏客户端 414
    15.4.1 About 窗口 414
    15.4.2 Options窗口 419
    15.4.3 数据绑定 427
    15.4.4 启动游戏 433
    15.5 小结 436
    15.6 练习 437
    15.7 本章要点 437
    第16 章 **桌面编程 439
    16.1 主窗口 439
    16.1.1 菜单控件 440
    16.1.2 路由命令和菜单 440
    16.2 创建控件并设置样式 443
    16.2.1 样式 444
    16.2.2 模板 444
    16.2.3 值转换器 448
    16.2.4 触发器 450
    16.2.5 动画 451
    16.3 WPF 用户控件 453
    16.4 把所有内容结合起来 462
    16.4.1 重构域模型 463
    16.4.2 视图模型 467
    16.4.3 大功告成 475
    16.5 小结 483
    16.6 练习 484
    16.7 本章要点 484
    第17 章 Windows Store 应用程序 485
    17.1 入门 485
    17.2 Windows Store 应用程序与桌面应用程序 487
    17.3 开发Windows Store应用程序 488
    17.3.1 视图模式 488
    17.3.2 磁贴和锁屏提醒 492
    17.3.3 应用程序的生存期 492
    17.4 应用程序的开发 492
    17.4.1 WPF 与Windows Store应用程序的XAML 差异 493
    17.4.2 模板和页面 494
    17.4.3 沙箱应用程序 495
    17.4.4 在页面之间导航 500
    17.4.5 管理状态 503
    17.5 修改KarliCards 游戏(第1 部分) 503
    17.5.1 创建CardLib 项目 503
    17.5.2 可视化方面的修改 511
    17.5.3 转换用户控件 511
    17.6 Windows Store 应用程序中的常见元素 518
    17.6.1 AppBar 控件 518
    17.6.2 设置面板 520
    17.6.3 磁贴、锁屏提醒以及初始屏幕 523
    17.7 修改KarliCards 游戏(第2 部分) 524
    17.8 Windows 应用商店529
    17.9 小结 530
    17.10 练习 530
    17.11 本章要点 531
    第18 章 部署桌面应用程序 533
    18.1 部署概述 534
    18.2 ClickOnce 部署 534
    18.2.1 实现ClickOnce 部署 535
    18.2.2 用ClickOnce 安装应用程序 541
    18.2.3 创建和使用应用程序的更新包 542
    18.3 InstallShield Limited Edition 543
    18.4 小结 549
    18.5 练习 549
    18.6 本章要点 549
    第Ⅲ部分 Web 编 程
    第19 章 ASP.NET Web 编程 553
    19.1 Web 应用程序概述 554
    19.2 ASP.NET 运行库 554
    19.3 创建简单的Web页面 555
    19.4 服务器控件.562
    19.5 ASP.NET 回送 563
    19.6 ASP.NET AJAX 回送 568
    19.7 输入的有效性验证 571
    19.8 状态管理 575
    19.8.1 客户端的状态管理 576
    19.8.2 服务器端的状态管理 578
    19.9 样式 581
    19.10 母版页 585
    19.11 站点导航 589
    19.12 身份验证和授权 592
    19.12.1 身份验证的配置 593
    19.12.2 使用**控件 596
    19.13 读写SQL Server数据库598
    19.14 小结 607
    19.15 练习 607
    19.16 本章要点 607
    第20 章 部署Web 应用程序 609
    20.1 Internet Information Services 609
    20.2 IIS 配置 611
    20.3 复制Web 站点 612
    20.4 发布Web 站点 615
    20.5 小结 617
    20.6 练习 618
    20.7 本章要点 618
    第Ⅳ部分 数 据 访 问
    第21 章 文件系统数据621
    21.1 流 621
    21.2 用于输入和输出的类 622
    21.2.1 File 类和Directory 类 623
    21.2.2 FileInfo 类 624
    21.2.3 DirectoryInfo类 625
    21.2.4 路径名和相对路径 626
    21.2.5 FileStream对象 626
    21.2.6 StreamWriter对象 632
    21.2.7 StreamReader对象 634
    21.2.8 异步文件访问 641
    21.2.9 读写压缩文件 641
    21.3 序列化对象 644
    21.4 监控文件系统 648
    21.5 小结 653
    21.6 练习 653
    21.7 本章要点 654
    第22 章 XML 655
    22.1 XML 文档 656
    22.1.1 XML 元素 656
    22.1.2 特性 657
    22.1.3 XML 声明 657
    22.1.4 XML 文档的结构 658
    22.1.5 XML 名称空间 658
    22.1.6 格式良好并有效的XML 659
    22.1.7 验证XML 文档 660
    22.2 在应用程序中使用XML.663
    22.2.1 XML 文档对象模型 663
    22.2.2 选择节点 673
    22.2.3 XPath 673
    22.3 小结.677
    22.4 练习.677
    22.5 本章要点.678
    第23 章 LINQ 简介 679
    23.1 **个LINQ 查询680
    23.1.1 用var 关键字声明
    结果变量 681
    23.1.2 指定数据源:from 子句 682
    23.1.3 指定条件:where 子句 682
    23.1.4 选择元素:select 子句 682
    23.1.5 完成:使用foreach 循环 683
    23.1.6 延迟执行的查询 683
    23.2 使用LINQ 方法语法.683
    23.2.1 LINQ 扩展方法 683
    23.2.2 查询语法和方法语法 684
    23.3 排序查询结果685
    23.4 orderby 子句687
    23.5 用方法语法排序687
    23.6 查询大型数据集689
    23.7 聚合运算符.691
    23.8 查询复杂的对象694
    23.9 投影:在查询中创建新对象698
    23.10 投影:方法语法700
    23.11 单值选择查询700
    23.12 Any()和All()方法701
    23.13 多级排序.703
    23.14 多级排序方法语法:ThenBy 705
    23.15 组合查询.705
    23.16 Take()和Skip()方法 707
    23.17 First()和FirstOrDefault()方法 709
    23.18 LINQ 集运算符 710
    23.19 Join 查询 713
    23.20 小结 714
    23.21 练习 714
    23.22 本章要点 715
    第24 章 应用LINQ717
    24.1 LINQ 的变体 717
    24.2 给数据库使用LINQ 718
    24.3 安装SQL Server 和Northwind 示例数据 718
    24.3.1 安装SQL Server Express .719
    24.3.2 安装Northwind 示例数据库719
    24.4 **个LINQ 数据库查询 719
    24.5 浏览数据库关系 723
    24.6 使用LINQ to XML 725
    24.7 LINQ to XML 函数构造方式 725
    24.8 保存和加载XML 文档 729
    24.8.1 从字符串中加载XML 732
    24.8.2 已保存的XML文档内容 732
    24.9 处理XML 片段 732
    24.10 从数据库中生成XML 734
    24.11 查询XML 文档的方法 737
    24.12 使用LINQ to XML查询成员 738
    24.12.1 Elements() 738
    24.12.2 Descendants() 739
    24.12.3 Attributes() 741
    24.13 小结 743
    24.14 练习 743
    24.15 本章要点 744
    第Ⅴ部分 其 他 技 术
    第25 章 Windows Communication Foundation 747
    25.1 WCF 的含义748
    25.2 WCF 概念748
    25.2.1 WCF 通信协议 749
    25.2.2 地址、端点和绑定 750
    25.2.3 协定 751
    25.2.4 消息模式 752
    25.2.5 行为 752
    25.2.6 驻留 752
    25.3 WCF 编程753
    25.3.1 WCF 测试客户端程序 759
    25.3.2 定义WCF 服务协定 762
    25.3.3 自驻留的WCF 服务 769
    25.4 小结 776
    25.5 练习 776
    25.6 本章要点 777
    第26 章 Windows Workflow Foundation 779
    26.1 Hello World 779
    26.2 工作流和活动781
    26.2.1 If 活动 781
    26.2.2 While 活动 782
    26.2.3 Sequence 活动 782
    26.3 实参和变量 783
    26.4 定制活动 788
    26.4.1 工作流扩展 790
    26.4.2 活动的有效性验证 795
    26.4.3 活动设计器 796
    26.5 小结 798
    26.6 练习 798
    26.7 本章要点 799
    附录A 习题答案 801
    编辑推荐语
    Wrox经典红皮书,屡获殊荣的C#名著和**畅销书
    长期位居C#开发类零售榜首,**无数新手走入C#**
    *新版更新至C# 2012和.NET 4.5
    2009、2011年度全行业**畅销品种

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外