C#OOP之十三 组件、程序集与反射

C# 同时被 2 个专栏收录
126 篇文章 7 订阅
751 篇文章 34 订阅

视频:https://edu.csdn.net/course/detail/27107

 

组件

 

 组件技术是软件领域一项非常大的成就。组件技术像搭积木游戏一样,在搭积木时,我们知道并不是任何的两个积木都可以组合,能组合的积木之间必定存在可以衔接的接口,同时,已经搭好的积木可以作为一个整体的大积木,被用来与其他积木组合。

        在软件领域,这些“积木”模型有微软的COM,Sun的JavaBean、.Net的程序集等。

        组件可以提高子程序的重用性和灵活性,并便于子程序的发布。也可以节省开发时间,提高程序的可靠性。

        例如,Shapes类包含代表圆、三角形或其他图形的对象。它的方法可用于计算图形面积或执行图形的其他操作。许多程序都要使用Shape类,完成如下功能:加色/绘图程序、Visio/PPT/Word画图、建筑/施工设计、CAD、游戏及其他程序。

       如果把Shapes设计成组件,仅定义一次,被在多个程序重用性,岂不美哉?(注意:不是在多个程序中Ctrl+C、Ctrl+V该类,这就太代码工人了。)

        在.Net编程模型中,我们使用程序集来实现组件技术的使用。

 

程序集

 

对于.Net来讲,无论C#、VB、J#那种语言的应用程序编译的最终结果都是一个程序集。编译而成的程序集包括我们提到的Exe文件或DLL文件。.Net编译生成的Exe文件和常规我们见的二进制可执行文件(exe文件,比如说QQ.exe)是不一样的,它是由中间语言(IL)组成的可执行文件,必须由CLR来执行。

程序集具有以下特点:

·                程序集作为 .exe 或 .dll 文件实现

·                通过将程序集放在全局程序集缓存中,可在多个应用程序之间共享程序集。

·                要将程序集包含在全局程序集缓存中,必须对程序集进行强命名。

·                程序集仅在需要时才加载到内存中

·                可以使用反射以编程方式获取关于程序集的信息

创建与使用程序集

 

 第1步:建立控制台项目,给项目改名为“CalcShapes”,如下图:

 

 

 

第3步:查看解决方案,并修改Shapes类库项目中的“Class1.cs”名为“Circle.cs”

 

 

 

第4步:编写Circle类的代码:

 

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
 
namespace Shapes
{
   public classCircle
   {
        double radius;
 
       public doubleRadius
       {
            get{ return radius; }
            set{ radius = value; }
       }
 
       
       public Circle()
       {
            radius = 0;
       }
       public Circle(doublegivenRadius)
       {
            radius = givenRadius;
       }
       public doublegetArea()
       {
            returnSystem.Math.PI * (radius * radius);
       }
   }
}

 

 

 

 

 

第5步:在控制台程序使用Shapes项目中的程序集,在CalcShapes项目的“引用”上右键单击“添加引用”,然后弹出下面的对话框,选择“项目”选项卡,选择“Shapes”项目,然后点击“确定”按钮即可。

 

 

 

 

第6步:在控制台程序中编写代码,并查看运行效果;

 

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingShapes;  //1.引用命名空间;
 
namespaceCalcShapes
{
    class Program
   {
       static voidMain(string[]args)
       {
            Circlecircle1 = new Circle();
            circle1.Radius = 3.3;  //设置圆周率
            Console.WriteLine(circle1.getArea().ToString()); //现实圆面积
       }
   }
}

 

 

 

 

 

项目1:使用Winform来添加Shapes类引用

 

 项目背景:针对我们已经写好的程序集文件,方便我们在以后在各种程序中使用,所以,我们应该从各个方面将该组件淋漓尽致使用的“压榨干净”。在上述基础上,添加新项目

解决方案:学习添加Winform项目

步骤1:添加Winform新项目到刚才的项目,如下图:

 

 

 

步骤4:编写代码:

 

usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingShapes; //1.引用命名空间
 
namespaceWinCalc
{
   public partialclassForm1 : Form
   {
       public Form1()
       {
            InitializeComponent();
       }
 
       private voidbutton1_Click(object sender,EventArgs e)
       {
            doubleradious = 0.0;
            Circlecircle1 = new Circle();
            circle1.Radius = Convert.ToDouble(radious);
            MessageBox.Show("圆的面积为:" +circle1.getArea().ToString());
       }
   }
}

 

 

 

 

 

步骤5:设置WinCalc为启动项目,如下图,然后运行(F5):

 

 

 

 

步骤6:出现运行界面,输入半径,如下图:

 

 

 

 

思考与扩充,在.Net中程序集组件引用的本质是多加几个类库项目,而是引用的其中的核心组件是什么?

请注意添加引用的本质是类库项目所对应的程序集文件,如Shapes\bin\DebugShapes.dll文件。

【扩充在VB下使用C#的dll文件】

1.      界面设计省略同C#

2.代买比较痛苦:  

PublicClass Form1
 
    Private Sub Button1_Click(ByVal sender AsSystem.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim circle As Shapes.Circle
        circle = New Shapes.Circle()
        circle.Radius = 3.3
        MessageBox.Show("VB圆面积" +circle.getArea().ToString())
    End Sub
End Class

 

 

 

2.      效果如下:

 

 

 

 

 

深入研究程序集

 

对于可执行的程序集来讲,包含五部分的信息:

n       PE32头

这是标准的Windows可执行文件头,它可以引导操作系统对此文件进行执行。二进制的可执行文件也必须有这个头操作系统才能执行。PE头里包含了标识文件类型的信息:Exe或Dll;除此之外里面还包括其生成时间以及入口方法地址(Main())等。操作系统可以通过读取这个头将托管模块加载到内存中然后调用CLR从入口方法开始执行。

n       元数据

元数据是托管模块中最重要的数据。元数据用来表述托管模块中包含的类型信息,这些信息包括类、接口、方法、字段、属性、事件等代码元素的定义信息。每个程序集都包含有元数据表,元数据表通常有两种,一种是表述代码中的类型或成员的列表;另外一种是表述源代码中引用的类型和成员的表。在模块或程序集中定义和引用的每个类型和成员都将在元数据中进行说明。当执行程序时,运行库将加载元数据,并可以通过它来发现有关代码的类、成员、继承等信息。

n       中间语言

.Net编译器将编程语言的源代码编译后生成的中间语言代码,在执行时,CLR将这些中间语言代码编译成CLR执行。

n       资源

资源是指程序在运行时所需要的资源,包括图片、字符串等。在默认情况下,一个程序集可以包含资源也可以不包含资源。如果程序集包含资源,那么程序集中会有一个叫做资源清单的结构专门来描述和连接这些资源文件,公共语言运行库在运行时会管理或加载这些资源文件。

n       程序集清单

程序集清单包含描述该程序集中各元素彼此如何关联的数据集合。这些数据包括:程序集名称、版本号、区域性、程序集中文件所有文件的列表、类型引用信息、有关被引用程序集的信息等。其中微软规定的前四项(程序集名称、版本号、区域性和强名称信息)构成了程序集的标识。查看.Net创建的任何项目拟都会发现一个叫“AssemblyInfo”的文件,这个文件就是用来设置程序集清单的,一般在创建文件时会被自动生成。

 

反射及其使用

 

提到反射,首先我们会想到中学物理,光的反射是成像的基础。如果没有光的反射,你将看不到任何东西。如果没有反射,你也不能照镜子,就算你再帅再靓,你也不知道。

对于物体来说,你可以直接查看该物体,也可以通过镜子来查看该物体。这些概念和软件技术中反射的概念很相似。在软件技术中,反射代表一种方法,一种通过间接途径来查看和访问程序集中元素的方法。

 

 

反射本质

 

C#项目在编译后生成程序集,而程序集通过记录了代码中的所有类型。假如说,我们目前有某个组件的程序集,而没有源代码,我们能不能通过一种机制从程序集中取出各种类型进行操作呢?答案是肯定的,在.Net中可以通过反射机制从程序中提取任何存在的类型,包括类、结构、委托、接口和枚举等,提取出类型后,利用反射机制我们甚至可以重新生成这些类型的对象,然后使用这些类型的成员,包括方法、属性、事件、构造方法等。在一般情况下,我们可以使用反射来执行以下任务:

n        获取程序集中有关公共类型及其公共成员的信息

n        了解代码所在的模块和程序集

n        调用程序集中类型对象公共属性或方法

要使用反射操作某个程序集中的类型,基本分为两步走:

1.      加载要反射的程序集;

2.      然后通过Type类的方法对程序集中的类型进行枚举或调用。

因为对非公共信息的访问将带来安全风险,所以.Net反射机制在默认情况下只能对程序集中的公共类型的信息或成员进行反射。

 

 

 

使用反射

 

在使用反射之前,我们首先需要加载程序集。需要使用System.Reflection命名空间下的Assembly类的Load方法或LoadFrom方法。这两个方法都是静态方法:

Assembly.Load(String 程序集名称)

例如:Assembly assA=Assembly.Load(“Shapes”);

Assembly.LoadFrom(String  程序集路径)

     例如:Assembly assB=Assembly.LoadFrom(@”F:\MyShapes\bin\Debug\MyShaps.dll”)

接下来,通过Assembly的GetType和GetTypes方法来获得加载程序集的类型了。前者只能获得程序集里一个类型,后者可以获得程序集里所有类型,原型如下:

public Type    GetType(string name) //根据类名获得该类型

public Type[]  GetTypes()  //获得程序集的所有类型

一旦获得程序集中的类型,就可以重建类型对应的对象。有关Type类的常用方法如下:

Type方法

返回类型

操作说明

GetMethod/GetMethods

MethodInfo

使用MethodInfo对象封装的方法名称、返回类型、参数、访问修饰符等

GetField/GetFields

FieldInfo

使用FieldInfo封装类型的字段名称、访问修饰符等

GetEvent/GetEvents

EventInfo

使用EventInfo封装类型的字段名称、事件处理程序、数据类型、自定义属性、声明类型和反射类型等

GetProperty/GetProperties

PropertyInfo

使用PropertyInfo封装属性的名称、数据类型、声明类型等

GetConstructor/GetConstructors

ConstructorInfo

使用ConstrucorInfo封装构造方法的名称、参数、访问修饰符等信息

 

 

小结:

 

在本章中,我们主要学习了:

u      组件的历史和应用

u      .Net中的组件技术

u      反射技术的使用

u      序列化

 

英语词汇:

 

英文             全文                                         中文

Attribute                                           属性

Positional                                                 状态的

Element                                            元素

Description                                              描述

Temperature                                            温度

Fahrenheit                                               华氏温度

Service                                                    服务

Import                                                     导入

Inherited                                           继承的

All                                                    所有的

Assembly                                                装配、集合、组件

Module                                            模块

Struct                                                      结构

Specify                                             指定

                                                        游戏者

 

练习项目:

 

       1.试将以前我们写的计算器的计算类生成.dll程序集,供其他地方使用。

 

 

 

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

内容简介 本书是C#领域久负盛名的经典著作,深入全面地叙述了C#编程语言和.NET平台核心,并以大量示例剖析相关概念。书中介绍了C#的各种语言构造、.NET 2.0的类、核心API、公共中间语言(CIL)、动态程序和ASP.NET扩展等内容;同时也介绍了.NET 3.0和.NET 3.5中新的编程API,包括WPF 、WCF和WF 的功能;另外,还介绍了最新的C# 3.0编程语言、LINQ编程技术、COM.NET 的互操作性以及平台无关的.NET开发。   本书由微软C# MVP Andrew Troelsen编写,历经多次修订,适合各层次.NET开发人员阅读。 作者简介 Andrew Troelsen世界级c#专家,微软VisuaI C#MVP。他是著名的微软技术咨询企业Intertech的合伙人和副总裁,该公司的客户包括微软、霍尼韦尔、美国宇航局等。他曾为MSDN网站和MacTech网站撰写了有关各种操作系统平台上.NET技术的文章,并经常在业界主要技术会议上发表f演讲和开设技术讲座。除本书外,他还撰写了COM and Net interoperabity和Visual Basic NET and the NET Platform An Advanced Guide等十多部NET技术方面的著作。 目录 第一部分 C#和.NET平台简介 第1章 NET之道  1.1 NET之前的世界  1.2 NET解决方案  1.3 NET平台构造块(CLR、CTS和CLS)简介  1.4 其他支持.NET的编程语言  1.5 NET程序概览  1.6 CTS  1.7 CLS  1.8 CLR  1.9 程序/命名空间/类型的区别  1.10 使用ildasm.exe探索程序  1.11 使用Lutz Roeder的Reflector来查看程序  1.12 部署.NET运行库  1.13 NET的平台无关性  1.14 小结  第2章 构建C#应用程序  2.1 NET Framework 3.5 SDK的作用  2.2 用csc.exe构建C#应用程序  2.3 使用TextPad构建.NET应用程序  2.4 使用Notepad++构建.NET应用程序  2.5 使用SharpDevelop构建.NET应用程序  2.6 使用Visual C# 2008 Express构建.NET应用程序  2.7 使用Visual Studio 2008构建.NET应用程序  2.8 其他.NET开发工具  2.9 小结  第二部分 C#核心编程结构 第3章 C#核心编程结构Ⅰ  3.1 一个简单的C#程序  3.2 有趣的题外话:System.Environment类的其他成员  3.3 System.Console类  3.4 系统数据类型和C#简化符号  3.5 System.String数据类型  3.6 窄化和宽化数据类型转换  3.7 C#迭代结构  3.8 条件结构和关系/相等运算符  3.9 小结  第4章 C#核心编程结构Ⅱ  4.1 方法和参数修饰符  4.2 成员重载  4.3 C#中的数组操作  4.4 枚举类型  4.5 结构类型  4.6 值类型和引用类型  4.7 值类型和引用类型:最后的细节  4.8 C#可空类型  4.9 小结  第5章 定义封装的类类型  5.1 C#类类型  5.2 类构造函数  5.3 this关键字的作用  5.4 static关键字  5.5 定义OOP的支柱  5.6 C#访问修饰符  5.7 第一个支柱:C#的封装支持  5.8 常量数据  5.9 只读字段  5.10 C#的分部类型  5.11 通过XML生成C#源代码的文档  5.12 查看劳动成果  5.13 小结  第6章 继承和多态  6.1 继承的基本机制  6.2 回顾Visual Studio类关系图  6.3 第二个支柱:继承  6.4 包含/委托编程  6.5 第三个支柱:C#的多态支持  6.6 基类/派生类的转换规则  6.7 超级父类:System.Object  6.8 小结  第7章 结构化异常处理  7.1 错误、bug异常  7.2 NET异常处理的作用  7.3 最简单的例子  7.4 配置异常的状态  7.5 系统级异常(System.SystemException)  7.6 应用程序级异常(System.ApplicationException)  7.7 处理多个异常  7.8 finally块  7.9 谁在引发什么异常 7.10 未处理异常的后果  7.11 使用Visual Studio调试未处理的异常  7.12 小结  第8章 对象的生命周期  8.1 类
小提示: 本资料仅供个人学习参考,请勿用于商业用途,如有能力请尽量购买正版图书,也是对作者的支持。 高清PDF中文完整版, 被称为“C#圣经”的权威著作.    Amazon超级畅销书   全面涵盖C# 3.0,用IL深入揭示各语言特性..   深度剖析.NET 3.5平台,让你知其然,更知其所以然   国内多位微软MVP联手翻译... 本书提供作译者介绍   Andrew Troelsen世界级c#专家,微软VisuaI C#MVP。他是著名的微软技术咨询企业Intertech的合伙人和副总裁,该公司的客户包括微软、霍尼韦尔、美国宇航局等。他曾为MSDN网站和MacTech网站撰写了有关各种操作系统平台上.NET技术的文章,并经常在业界主要技术会议上发表f演讲和开设技术讲座。除本书外,他还撰写了COM and Net interoperabity和Visual Basic NET and the NET Platform An Advanced Guide等十多部NET技术方面的著作 本书是c#领域久负盛名的经典著作,深入全面地叙述了c#编程语言和.net平台核心,并以大量示例剖析相关概念。书中介绍了c#的各种语言构造、.net 2.0的类、核心api、公共中间语言(cil)、动态程序和asp.net扩展等内容;同时也介绍了.net 3.0和.net 3.5中新的编程api,包括wpf 、wcf和wf 的功能;另外,还介绍了最新的c# 3.0编程语言、linq编程技术、com.net 的互操作性以及平台无关的.net开发。   本书由微软c# mvp andrew troelsen编写,历经多次修订,适合各层次.net开发人员阅读。 第一部分 c#和.net平台简介 第1章 net之道  1.1 net之前的世界  1.2 net解决方案  1.3 net平台构造块(clr、cts和cls)简介  1.4 其他支持.net的编程语言  1.5 net程序概览  1.6 cts  1.7 cls  1.8 clr  1.9 程序/命名空间/类型的区别  1.10 使用ildasm.exe探索程序  1.11 使用lutz roeder的reflector来查看程序  1.12 部署.net运行库  1.13 net的平台无关性  1.14 小结  第2章 构建c#应用程序  2.1 net framework 3.5 sdk的作用  2.2 用csc.exe构建c#应用程序  2.3 使用textpad构建.net应用程序  . 2.4 使用notepad++构建.net应用程序  2.5 使用sharpdevelop构建.net应用程序  2.6 使用visual c# 2008 express构建.net应用程序  2.7 使用visual studio 2008构建.net应用程序  2.8 其他.net开发工具  2.9 小结  第二部分 c#核心编程结构 第3章 c#核心编程结构ⅰ  3.1 一个简单的c#程序  3.2 有趣的题外话:system.environment类的其他成员  3.3 system.console类  3.4 系统数据类型和c#简化符号  3.5 system.string数据类型  3.6 窄化和宽化数据类型转换  3.7 c#迭代结构  3.8 条件结构和关系/相等运算符  3.9 小结  第4章 c#核心编程结构ⅱ  4.1 方法和参数修饰符  4.2 成员重载  4.3 c#中的数组操作  4.4 枚举类型  4.5 结构类型  4.6 值类型和引用类型  4.7 值类型和引用类型:最后的细节  4.8 c#可空类型  4.9 小结  第5章 定义封装的类类型  5.1 c#类类型  5.2 类构造函数  5.3 this关键字的作用  5.4 static关键字  5.5 定义oop的支柱  5.6 c#访问修饰符  5.7 第一个支柱:c#的封装支持  5.8 常量数据  5.9 只读字段  5.10 c#的分部类型  5.11 通过xml生成c#源代码的文档  5.12 查看劳动成果  5.13 小结  第6章 继承和多态  6.1 继承的基本机制  6.2 回顾visual studio类关系图  6.3 第二个支柱:继承  6.4 包含/委托编程  6.5 第三个支柱:c#的多态支持  6.6 基类/派生类的转换规则  6.7 超级父类:system.object  6.8 小结  第7章 结构化异常处理  7.1 错误、bug异常  7.2 net异常处理的作用  7.3 最简单的例子  7.4 配置异常的状态  7.5 系统级异常(system.systemexception)  7.6 应用程序级异常(system.applicationexception)  7.7 处理多个异常  7.8 finally块  7.9 谁在引发什么异常 7.10 未处理异常的后果  7.11 使用visual studio调试未处理的异常  7.12 小结  第8章 对象的生命周期  8.1 类、对象和引用  8.2 对象生命周期的基础  8.3 应用程序根的作用  8.4 对象的代  8.5 system.gc类型  8.6 构建可终结对象  8.7 构建可处置对象  8.8 构建可终结类型和可处置类型  8.9 小结  第三部分 c#高级编程结构 第9章 接口  9.1 接口类型  9.2 定义自定义接口  9.3 实现接口  9.4 在对象级别调用接口成员  9.5 接口作为参数  9.6 接口作为返回值  9.7 接口类型数组  9.8 使用visual studio 2008实现接口  9.9 通过显式接口实现解决命名冲突  9.10 定义接口层次结构  9.11 构建可枚举类型(ienumerable和ienumerator)  9.12 构建可克隆的对象(icloneable)  9.13 构建可比较的对象(icomparable)  9.14 回调接口  9.15 小结  第10章 泛型  10.1 system.collections命名空间的接口  10.2 system.collections命名空间的类类型  10.3 system.collections.specialized命名空间  10.4 装箱、拆箱以及和system.object的关系  10.5 类型安全和强类型合问题  10.6 system.collections.generic命名空间  10.7 创建自定义泛型方法  10.8 创建泛型结构和类  10.9 创建自定义泛型合  10.10 创建泛型基类  10.11 创建泛型接口  10.12 小结  第11章 委托、事件和lambda  11.1 net委托类型  11.2 使用c#定义委托  11.3 system.multicastdelegatesystem.delegate基类  11.4 最简单的委托示例  11.5 使用委托改造car类型  11.6 更复杂的委托示例  11.7 委托协变  11.8 创建泛型委托  11.9 c#事件  11.10 泛型eventhandlert委托  11.11 c#匿名方法  11.12 方法组转换  11.13 c# 3.0 lambda运算符  11.14 小结  第12章 索引器、运算符和指针  12.1 索引器方法  12.2 运算符重载  12.3 自定义类型转换  12.4 指针类型  12.5 c#预处理指令  12.6 小结  第13章 c# 3.0的语言功能  13.1 隐式类型局部变量  13.2 自动属性  13.3 扩展方法  13.4 分部方法  13.5 对象初始化器  13.6 匿名类型  13.7 小结  第14章 linq  14.1 linq的作用  14.2 linq查询表达式初览  14.3 linq和泛型合  14.4 linq和非泛型合  14.5 查询运算符的内部表示  14.6 linq查询运算符  14.7 linq查询  14.8 小结  第四部分 使用.net程序编程 第15章 .net程序入门  15.1 定义自定义命名空间  15.2 .net程序的作用  15.3 .net程序的格式  15.4 构建和使用单文件程序  15.5 构建和使用多文件程序  15.6 私有程序  15.7 共享程序  15.8 使用共享程序  15.9 配置共享程序  15.10 gac的内部结构  15.11 发行者策略程序  15.12 codebase元素  15.13 system.configuration命名空间  15.14 机器配置文件  15.15 小结  第16章 类型反射、晚期绑定和基于特性的编程  16.1 类型元数据的必要性  16.2 反射  16.3 构建自定义的元数据查看器  16.4 动态加载程序  16.5 反射共享程序  16.6 晚期绑定  16.7 特性编程 16.8 构建自定义特性  16.9 程序级别(和模块级别)特性  16.10 使用早期绑定反射特性  16.11 使用晚期绑定反射特性  16.12 反射、晚期绑定和自定义特性的使用背景  16.13 构建可扩展的应用程序  16.14 小结  第17章 进程、应用程序域和对象上下文  17.1 回顾传统的win32进程  17.2 net平台下进程进行交互  17.3 net应用程序域  17.4 对象上下文边界  17.5 进程、应用程序域和上下文小结  17.6 小结  第18章 构建多线程应用程序  18.1 进程、应用程序域、上下文及线程之间的关系  18.2 net委托的简短回顾  18.3 委托的异步性  18.4 异步调用方法  18.5 system.threading命名空间  18.6 system.threading.thread类  18.7 以编程方式创建次线程  18.8 并发问题  18.9 使用timer callback编程  18.10 clr线程池  18.11 backgroundworker组件的作用  18.12 小结  第19章 cil和动态程序的作用  19.1 cil编程的本质  19.2 cil指令、特性和操作码  19.3 入栈和出栈:cil基于栈的本质  19.4 正反向工程  19.5 cil指令和特性  19.6 net基类库、c#和cil数据类型的映射  19.7 在cil中定义成员  19.8 剖析cil操作码  19.9 使用cil构建.net程序  19.10 动态程序  19.11 小结  第五部分 .net基类库简介 第20章 文件输入输出和隔离存储  20.1 研究system.io命名空间  20.2 directory(info)和file(info)类型  20.3 使用directoryinfo类型  20.4 使用directory类型  20.5 使用driveinfo类类型  20.6 使用fileinfo类  20.7 使用file类型 533 20.8 stream抽象类 535 20.9 使用streamwriter和streamreader类型  20.10 使用stringwriter和stringreader  20.11 使用binarywriter和binaryreader  20.12 以编程方式“观察”文件  20.13 实现异步文件i/o操作  20.14 隔离存储的作用  20.15 代码访问安全入门  20.16 隔离存储概览  20.17 使用isolatedstoragefile获取存储  20.18 实战隔离存储:clickonce部署  20.19 小结  第21章 对象序列化 21.1 对象序列化  21.2 为序列化配置对象 21.3 选择序列化格式化程序  21.4 使用binaryformatter序列化对象 21.5 使用soapformatter序列化对象 21.6 使用xmlserializer序列化对象  21.7 序列化对象合  21.8 自定义序列化过程  21.9 小结 第22章 ado.net之一:连接层 22.1 ado.net高层次定义 22.2 ado.net的数据提供程序 22.3 其他的ado.net命名空间  22.4 system.data命名空间的类型 22.5 使用接口抽象数据提供程序  22.6 创建autolot数据库  22.7 ado.net 数据提供程序工厂模型  22.8 ado.net的连接式访问  22.9 使用数据读取器  22.10 构建可重用的数据访问库 22.11 创建控制台ui前端  22.12 使用sqlcommand进行异步数据访问  22.13 数据库事务  22.14 小结  第23章 ado.net之二:断开连接层 23.1 ado.net断开连接层  23.2 dataset的作用  23.3 使用datacolumn  23.4 使用datarow  23.5 使用datatable  23.6 将datatable对象绑定到用户界面  23.7 使用数据适配器填充dataset/ datatable  23.8 重访autolotdal.dll  23.9 切换多表dataset对象  23.10 visual studio 2008的数据访问工具  23.11 从ui层解耦自动生成的代码  23.12 小结  第24章 linq api编程  24.1 linq to ado.net的作用  24.2 使用linq to dataset编程  24.3 使用linq to sql编程  24.4 使用sqlmetal.exe生成实体类  24.5 使用visual studio 2008建立实体类  24.6 使用linq to xml操作xml文档  24.7 在内存文档中导航  24.8 小结  第25章 wcf  25.1 各种分布式计算api  25.2 wcf的作用  25.3 wcf核心程序  25.4 visual studio wcf项目模板  25.5 wcf应用程序的基本构成  25.6 wcf的abc  25.7 构建wcf服务  25.8 承载wcf服务  25.9 构建wcf客户端应用程序  25.10 使用wcf服务库项目模板  25.11 以windows服务承载wcf服务  25.12 异步调用服务  25.13 定义wcf数据契约  25.14 小结  第26章 wf  26.1 定义业务流程  26.2 wf的构建块  26.3 wf程序、命名空间和项  26.4 构建一个启用工作流的简单应用  26.5 wf引擎承载代码  26.6 在工作流中调用web服务  26.7 构建可重用的wf代码库  26.8 关于自定义活动的简要说明  26.9 小结  第六部分 桌面用户界面 第27章 windows forms编程  27.1 windows forms 命名空间  27.2 创建一个简单的windows forms 程序(不用ide)  27.3 visual studio windows forms项目模板  27.4 剖析form  27.5 响应鼠标活动  27.6 响应键盘活动  27.7 设计对话框  27.8 通过gdi+呈现图形数据  27.9 创建一个完整的windows forms应用程序  27.10 小结  第28章 wpf和xaml  28.1 wpf背后的动机  28.2 各种形式的wpf应用程序  28.3 wpf程序  28.4 创建(不使用xaml的)wpf应用程序  28.5 application类型的其他细节  28.6 window类型的其他细节  28.7 构建(xaml相关的)wpf应用程序  28.8 将标记转换为.net程序  28.9 使用代码隐藏文件实现的关注点的分离  28.10 xaml语法  28.11 使用visual studio 2008构建wpf应用程序  28.12 在运行时处理xaml:simplexaml- pad.exe  28.13 微软expression blend的作用  28.14 小结  第29章 使用wpf控件编程  29.1 wpf控件库概述  29.2 使用xaml声明控件  29.3 依赖属性的作用  29.4 路由事件  29.5 使用button类型  29.6 使用checkboxe和radiobutton  29.7 使用listbox和combobox类型  29.8 使用文本区  29.9 使用面板进行内容布局  29.10 使用嵌套面板创建窗口框架  29.11 wpf控件命令  29.12 wpf数据绑定模型  29.13 使用ivalueconverter进行数据转换  29.14 绑定到自定义对象  29.15 将ui元素绑定到xml文档  29.16 小结  第30章 wpf 2d图形呈现、资源和主题  30.1 wpf图形呈现服务  30.2 探究shape派生类  30.3 使用wpf画刷  30.4 使用wpf画笔  30.5 探究drawing派生类  30.6 ui变换的功能  30.7 wpf动画服务  30.8 wpf的资源体系  30.9 为wpf控件定义应用样式  30.10 使用模板改变控件的ui  30.11 小结  第七部分 使用asp.net构建web应用程序 第31章 构建asp.net网页  31.1 http的作用  31.2 web应用程序和web服务  31.3 html的作用  31.4 客户端脚本的作用  31.5 提交表单数据(get和post)  31.6 构建传统的asp页面  31.7 传统asp相关问题  31.8 asp.net命名空间  31.9 asp.net网页代码模型  31.10 asp.net站点目录结构细节  31.11 asp.net页面编译周期  31.12 页面类型的继承链  31.13 传入的http请求交互  31.14 输出http响应交互  31.15 asp.net网页的生命周期  31.16 web.config文件的作用  31.17 小结  第32章 asp.net web控件、主题和母版页  32.1 web控件的本质  32.2 system.web.ui.control类型  32.3 system.web.ui.webcontrols.webcontrol类型  32.4 asp.net web控件的类别  32.5 构建功能丰富的asp.net站点  32.6 验证控件的作用  32.7 使用主题  32.8 使用html表格布局控件  32.9 小结  第33章 asp.net状态管理技术  33.1 状态问题  33.2 asp.net状态管理技术  33.3 asp.net视图状态的作用  33.4 global.asax文件的作用  33.5 应用程序状态会话状态差别  33.6 使用应用程序缓存  33.7 维护会话数据  33.8 cookie  33.9 sessionstate元素的作用  33.10 asp.net用户配置api  33.11 小结  第八部分 附录 附录a com.net的互操作性  a.1 net互操作的研究范围  a.2 net调用com互操作的简单示例  a.3 net互操作程序  a.4 运行库可调用包装  a.5 com idl的作用  a.6 使用类型库创建互操作程序  a.7 创建一个更复杂的com服务  a.8 互操作程序  a.9 在com中使用.net  a.10 ccw的作用  a.11 net类接口的作用  a.12 构建.net类型  a.13 生成类型库并注册.net类型  a.14 导出类型信息  a.15 创建一个visual basic 6.0的测试客户端  a.16 小结  附录b 使用mono进行平台无关的.net开发  b.1 net的平台无关性  b.2 获取和安装mono  b.3 mono开发工具  b.4 使用mono创建.net应用程序  b.5 推荐学习  b.6 小结  索引 
参与评论 您还未登录,请先 登录 后发表或查看评论
<br/>中文名称:C#入门经典 第三版  <br/>英文名称:Beginning Visual C# 2005 <br/>作者: Karli Watson, Christian Nagel, Jacob Hammer Pedersen, Jon D. Reid, Morgan Skinner, Eric White <br/><br/><br/> 由于中文版太大了,所以就不上传了,这里提供它的下载网址: <br/>http://www.ibook8.com/Software/catalog14/22937.html <br/><br/> 源代码下载网址: <br/>http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764578472,descCd-download_code.html <br/><br/><br/> 基本信息 <br/>·出版社:清华大学出版社 <br/>·ISBN:7302127352 <br/>·国别:United States/美国 <br/>·版次:2006-05-01 <br/>·出版日期:2006-5 <br/>·开本:16 <br/>·精简装:平装 <br/>·页数:864 <br/><br/> 编辑推荐   <br/>这是一本曾成就无数C#程序员的经典名著,厚而不“重”,可帮助您轻松掌握C# 2005的各种编程知识,为您的职业生涯打下坚实的基础!本书自第1版问世,国内销量达3万册!一本首选的入门教程。本书作者都是各自领域的专家,都是C#语言和.NET Framework爱好者。   <br/><br/>本书将全面介绍C#编程的所有知识,共分为5篇:第1篇是C#语言:介绍了C#语言的所有内容,从基础知识到面向对象的技术,应有尽有。第2篇是Windows编程:介绍如何用C#编写Windows应用程序,如何部署它们。第3篇是Web编程:描述Web应用程序的开发、Web服务和Web应用程序的部署。第4篇是数据访问:介绍在应用程序中如何使用数据,包括存储在硬盘文件上的数据、以XML格式存储的数据和数据库中的数据。第5篇是其他技术:讲述使用C#和.NET Framework的一些额外方式,包括程序、属性、XML文档、网络和GDI+图形编程。   <br/><br/>本书适合于想学习使用.NET Framework编写C#程序的初级读者,也适合于已了解.NET 1.0,而想学习.NET 2.0和Visual Studio 2005最新功能的读者。 <br/><br/> 图书目录 <br/>第Ⅰ部分 C# 语 言 <br/>第1章 C#简介 3 <br/>1.1 什么是.NET Framework 3 <br/>1.1.1 .NET Framework的内容 4 <br/>1.1.2 如何用.NET Framework编写 应用程序 4 <br/>1.2 什么是C# 7 <br/>1.2.1 用C#能编写什么样的应用程序 7 <br/>1.2.2 本书中的C# 8 <br/>1.3 Visual Studio 2005 8 <br/>1.3.1 Visual Studio 2005 Express产品 8 <br/>1.3.2 VS解决方案 9 <br/>1.4 小结 9 <br/>第2章 编写C#程序 10 <br/>2.1 Visual Studio 2005开发环境 10 <br/>2.2 控制台应用程序 13 <br/>2.2.1 Solution Explorer 15 <br/>2.2.2 Properties窗口 16 <br/>2.2.3 Error List窗口 16 <br/>2.3 Windows Forms应用程序 17 <br/>2.4 小结 20 <br/>第3章 变量和表达式 22 <br/>3.1 C#的基本语法 22 <br/>3.2 变量 26 <br/>3.2.1 简单类型 26 <br/>3.2.2 变量的命名 30 <br/>3.2.3 字面值 31 <br/>3.2.4 变量的声明和赋值 33 <br/>3.3 表达式 34 <br/>3.3.1 数学运算符 34 <br/>3.3.2 赋值运算符 38 <br/>3.3.3 运算符的优先级 39 <br/>3.3.4 命名空间 39 <br/>3.4 小结 42 <br/>3.5 练习 43 <br/>第4章 流程控制 44 <br/>4.1 布尔逻辑 44 <br/>4.1.1 位运算符 46 <br/>4.1.2 布尔赋值运算符 50 <br/>4.1.3 运算符的优先级更新 51 <br/>4.2 goto语句 52 <br/>4.3 分支 53 <br/>4.3.1 三元运算符 53 <br/>4.3.2 if语句 54 <br/>4.3.3 switch语句 57 <br/>4.4 循环 60 <br/>4.4.1 do循环 61 <br/>4.4.2 while循环 63 <br/>4.4.3 for循环 65 <br/>4.4.4 循环的中断 69 <br/>4.4.5 无限循环 70 <br/>4.5 小结 71 <br/>4.6 练习 71 <br/>第5章 变量的更多内容 73 <br/>5.1 类型转换 73 <br/>5.1.1 隐式转换 73 <br/>5.1.2 显式转换 75 <br/>5.1.3 使用Convert命令进行显式 转换 77 <br/>5.2 复杂的变量类型 80 <br/>5.2.1 枚举 81 <br/>5.2.2 结构 85 <br/>5.2.3 数组 87 <br/>5.3 字符串的处理 94 <br/>5.4 小结 98 <br/>5.5 练习 98 <br/> <br/>第6章 函数 100 <br/>6.1 定义和使用函数 101 <br/>6.1.1 返回值 102 <br/>6.1.2 参数 104 <br/>6.2 变量的作用域 111 <br/>6.2.1 其他结构中变量的作用域 113 <br/>6.2.2 参数和返回值全局数据 115 <br/>6.3 Main()函数 116 <br/>6.4 结构函数 119 <br/>6.5 函数的重载 120 <br/>6.6 委托 121 <br/>6.7 小结 124 <br/>6.8 练习 124 <br/>第7章 调试和错误处理 126 <br/>7.1 Visual Studio中的调试 126 <br/>7.1.1 非中断(正常)模式下的调试 127 <br/>7.1.2 中断模式下的调试 134 <br/>7.2 错误处理 143 <br/>7.3 小结 149 <br/>7.4 练习 150 <br/>第8章 面向对象编程简介 151 <br/>8.1 什么是面向对象编程 151 <br/>8.1.1 什么是对象 152 <br/>8.1.2 所有的东西都是对象 154 <br/>8.1.3 对象的生命周期 155 <br/>8.1.4 静态和实例类成员 156 <br/>8.2 OOP技术 156 <br/>8.2.1 接口 157 <br/>8.2.2 继承 158 <br/>8.2.3 多态性 160 <br/>8.2.4 对象之间的关系 161 <br/>8.2.5 运算符重载 163 <br/>8.2.6 事件 163 <br/>8.2.7 引用类型和值类型 163 <br/>8.3 Windows应用程序中的OOP 164 <br/>8.4 小结 166 <br/>8.5 练习 167 <br/>第9章 定义类 168 <br/>9.1 C#中的类定义 168 <br/>9.2 System.Object 173 <br/>9.3 构造函数和析构函数 174 <br/>9.4 Visual Studio 2005中的OOP 工具 178 <br/>9.4.1 Class View窗口 178 <br/>9.4.2 对象浏览器 181 <br/>9.4.3 添加类 182 <br/>9.4.4 类图 183 <br/>9.5 类库项目 184 <br/>9.6 接口和抽象类 187 <br/>9.7 结构类型 189 <br/>9.8 小结 191 <br/>9.9 练习 192 <br/>第10章 定义类成员 193 <br/>10.1 成员定义 193 <br/>10.1.1 定义字段 193 <br/>10.1.2 定义方法 194 <br/>10.1.3 定义属性 195 <br/>10.1.4 在类图中添加成员 200 <br/>10.1.5 重制成员 202 <br/>10.2 类成员的其他议题 203 <br/>10.2.1 隐藏基类方法 203 <br/>10.2.2 调用重写或隐藏的基类 方法 205 <br/>10.2.3 嵌套的类型定义 206 <br/>10.3 接口的实现 207 <br/>10.4 部分类定义 210 <br/>10.5 示例应用程序 212 <br/>10.5.1 规划应用程序 212 <br/>10.5.2 编写类库 213 <br/>10.5.3 类库的客户应用程序 219 <br/>10.6 小结 220 <br/>10.7 练习 221 <br/>第11章 合、比较和转换 222 <br/>11.1 合 222 <br/>11.1.1 使用合 223 <br/>11.1.2 定义合 229 <br/>11.1.3 索引符 230 <br/>11.1.4 给CardLib添加Cards合 232 <br/>11.1.5 关键字值合和 IDictionary 235 <br/>11.1.6 迭代器 236 <br/>11.1.7 深度复制 241 <br/>11.1.8 给CardLib添加深度复制 243 <br/>11.2 比较 245 <br/>11.2.1 类型比较 245 <br/>11.2.2 值比较 250 <br/>11.3 转换 266 <br/>11.3.1 重载转换运算符 266 <br/>11.3.2 as运算符 267 <br/>11.4 小结 268 <br/>11.5 练习 269 <br/>第12章 泛型 271 <br/>12.1 泛型的概念 271 <br/>12.2 使用泛型 272 <br/>12.2.1 可空类型 272 <br/>12.2.2 System.Collections. Generic 命名空间 279 <br/>12.3 定义泛型 288 <br/>12.3.1 定义泛型类 288 <br/>12.3.2 定义泛型接口 300 <br/>12.3.3 定义泛型方法 300 <br/>12.3.4 定义泛型委托 302 <br/>12.4 小结 302 <br/>12.5 练习 303 <br/>第13章 其他OOP技术 304 <br/>13.1 ::运算符和全局命名空间 限定符 304 <br/>13.2 定制异常 305 <br/>13.3 事件 307 <br/>13.3.1 什么是事件 307 <br/>13.3.2 使用事件 309 <br/>13.3.3 定义事件 311 13.4 扩展和使用CardLib 319 13.5 小结 326 13.6 练习 327 第Ⅱ部分 Windows 编 程 第14章 Windows编程基础 331 14.1 控件 331 14.1.1 属性 332 14.1.2 控件的定位、停靠和对齐 333 14.1.3 事件 334 14.2 Button控件 336 14.2.1 Button控件的属性 337 14.2.2 Button控件的事件 337 14.3 Label和LinkLabel控件 339 14.4 TextBox控件 340 14.4.1 TextBox控件的属性 340 14.4.2 TextBox控件的事件 341 14.5 RadioButton和CheckBox 控件 348 14.5.1 RadioButton控件的属性 349 14.5.2 RadioButton控件的事件 349 14.5.3 CheckBox控件的属性 349 14.5.4 CheckBox控件的事件 350 14.5.5 GroupBox控件 350 14.6 RichTextBox控件 354 14.6.1 RichTextBox控件的属性 354 14.6.2 RichTextBox控件的事件 355 14.7 ListBox和CheckedListBox 控件 360 14.7.1 ListBox控件的属性 360 14.7.2 ListBox控件的方法 361 14.7.3 ListBox控件的事件 362 14.8 ListView控件 365 14.8.1 ListView控件的属性 365 14.8.2 ListView控件的方法 367 14.8.3 ListView控件的事件 367 14.8.4 ListViewItem 368 14.8.5 ColumnHeader 368 14.8.6 ImageList控件 368 14.9 TabControl控件 375 14.9.1 TabControl控件的属性 376 14.9.2 使用TabControl控件 376 14.10 小结 378 14.11 练习 379 第15章 Windows Forms的高级功能 380 15.1 菜单和工具栏 380 15.1.1 两个实质一样的控件 380 15.1.2 使用MenuStrip控件 381 15.1.3 手工创建菜单 381 15.1.4 ToolStripMenuItem控件的 其他属性 384 15.1.5 给菜单添加功能 384 15.2 工具栏 386 15.2.1 ToolStrip控件的属性 387 15.2.2 ToolStrip的项 387 15.2.3 StatusStrip控件 392 15.2.4 StatusStripStatusLabel的 属性 392 15.3 SDI和MDI应用程序 394 15.4 创建控件 403 15.4.1 调试用户控件 409 15.4.2 扩展LabelTextbox控件 410 15.5 小结 412 15.6 练习 413 第16章 使用通用对话框 414 16.1 对话框 414 16.2 如何使用对话框 415 16.3 文件对话框 416 16.3.1 OpenFileDialog 416 16.3.2 SaveFileDialog 427 16.4 打印 432 16.4.1 打印结构 432 16.4.2 打印多个页面 437 16.4.3 PageSetupDialog 439 16.4.4 PrintDialog 442 16.5 打印预览 446 16.5.1 PrintPreviewDialog 446 16.5.2 PrintPreviewControl 446 16.6 FontDialog和ColorDialog 447 16.6.1 FontDialog 447 16.6.2 ColorDialog 449 16.6.3 FolderBrowserDialog 450 16.7 小结 451 16.8 练习 452 第17章 部署Windows应用程序 453 17.1 部署概述 453 17.2 ClickOnce 部署 454 17.3 Visual Studio安装和部署 项目类型 463 17.4 Microsoft Windows安装 程序结构 464 17.4.1 Windows Installer术语 464 17.4.2 Windows Installer的优点 466 17.5 为Simple Editor创建安装 软件包 466 17.5.1 规划安装内容 467 17.5.2 创建项目 467 17.5.3 项目属性 468 17.5.4 安装编辑器 470 17.5.5 File System编辑器 471 17.5.6 File Types编辑器 474 17.5.7 Launch Condition编辑器 475 17.5.8 User Interface编辑器 476 17.6 构建项目 479 17.7 安装 479 17.7.1 Welcome 480 17.7.2 Read Me 481 17.7.3 License Agreement 481 17.7.4 Optional Files 481 17.7.5 选择安装文件夹 482 17.7.6 确认安装 483 17.7.7 进度 483 17.7.8 结束安装 484 17.7.9 运行应用程序 484 17.7.10 卸载 484 17.8 小结 484 17.9 练习 485 第Ⅲ部分 Web 编 程 <br/>第18章 Web编程基础 489 <br/>18.1 概述 489 <br/>18.2 ASP.NET 运行库 490 <br/>18.3 创建简单的Web页面 490 <br/>18.4 服务器控件 496 <br/>18.5 事件处理程序 497 <br/>18.6 输入的有效性验证 502 <br/>18.7 状态管理 505 <br/>18.7.1 客户端的状态管理 506 <br/>18.7.2 服务器端的状态管理 508 <br/>18.8 身份验证和授权 510 <br/>18.8.1 身份验证的配置 511 <br/>18.8.2 使用安全控件 515 <br/>18.9 读写SQL Server数据库 517 <br/>18.10 小结 525 <br/>18.11 练习 525 <br/>第19章 Web高级编程 526 <br/>19.1 示例站点 526 <br/>19.2 主页 527 <br/>19.3 站点导航 533 <br/>19.4 用户控件 535 <br/>19.5 个性化配置 537 <br/>19.5.1 个性化配置组 538 <br/>19.5.2 组件的个性化配置 539 <br/>19.5.3 定制数据类型中的个性化 配置 539 <br/>19.5.4 匿名用户的个性化配置 540 <br/>19.6 Web Parts 541 <br/>19.6.1 Web Parts管理器 542 <br/>19.6.2 Web Parts区域 542 <br/>19.6.3 Editor区域 544 <br/>19.6.4 Catalog区域 546 <br/>19.6.5 Connections区域 548 <br/>19.7 小结 550 19.8 练习 551 <br/>第20章 Web服务 552 <br/>20.1 Web服务推出之前 552 <br/>20.1.1 远程过程调用(RPC) 553 <br/>20.1.2 SOAP 553 <br/>20.2 使用Web服务的场合 554 <br/>20.2.1 宾馆旅行社代理应用程序 554 <br/>20.2.2 书籍发布应用程序 555 <br/>20.2.3 客户应用程序的类型 555 <br/>20.2.4 应用程序的体系结构 555 <br/>20.3 Web服务的体系结构 556 <br/>20.3.1 Web服务的搜索引擎 557 <br/>20.3.2 可以调用的方法 558 <br/>20.3.3 调用方法 559 <br/>20.3.4 SOAP和防火墙 561 <br/>20.3.5 WS-I基本个性化配置 561 20.4 Web服务和.NET Framework 561 20.4.1 创建Web服务 561 20.4.2 客户程序 563 20.5 创建一个简单的ASP.NET Web服务 564 20.5.1 生成的文件 564 20.5.2 添加Web方法 565 20.6 测试Web服务 566 20.7 执行Windows客户程序 567 20.8 异步调用服务 570 20.9 执行ASP.NET客户程序 572 20.10 传送数据 572 20.11 小结 575 20.12 练习 576 第21章 部署Web应用程序 577 21.1 Internet Information Services 577 21.2 IIS配置 578 21.3 复制Web站点 582 21.4 预编译Web站点 583 21.5 Windows安装程序 584 21.5.1 创建安装程序 584 21.5.2 安装Web 应用程序 586 21.6 小结 588 21.7 练习 589 第Ⅳ部分 数 据 访 问 第22章 文件系统数据 593 22.1 流 593 22.2 用于输入和输出的类 594 22.2.1 File和Directory类 595 22.2.2 FileInfo类 596 22.2.3 DirectoryInfo类 597 22.2.4 FileStream对象 598 22.2.5 StreamWriter对象 604 22.2.6 StreamReader对象 606 22.2.7 读写压缩文件 612 22.3 串行化对象 616 22.4 监控文件结构 620 22.5 小结 626 22.6 练习 627 第23章 XML 628 23.1 XML文档 628 23.1.1 XML元素 628 23.1.2 属性 629 23.1.3 XML声明 630 23.1.4 XML文档的结构 630 23.1.5 XML命名空间 631 23.1.6 格式良好并有效的XML 632 23.1.7 验证XML文档 632 23.2 在应用程序中使用XML 637 23.2.1 XML文档对象模型 637 23.2.2 选择节点 646 23.3 小结 654 23.4 练习 654 第24章 数据库和ADO.NET 655 24.1 ADO.NET概述 655 24.1.1 ADO.NET名称的来源 655 24.1.2 ADO.NET的设计目标 656 24.2 ADO.NET类和对象概述 657 24.2.1 提供者对象 658 24.2.2 用户对象 659 24.2.3 使用System.Data命名空间 659 24.3 安装SQL Server和Northwind 示例数据 660 24.3.1 安装SQL Express 661 24.3.2 安装Northwind示例 数据库 661 24.4 用DataReader读取数据 662 24.5 用DataSet读取数据 668 24.5.1 用数据填充DataSet 668 24.5.2 访问DataSet中的表、行 和列 668 24.6 更新数据库 671 24.6.1 给数据库添加行 675 24.6.2 删除行 681 24.7 在DataSet中访问多个表 683 24.7.1 ADO.NET中的关系 683 24.7.2 导航关系 684 24.8 XML和ADO.NET 691 24.9 ADO.NET中的SQL支持 694 24.9.1 DataAdapter对象中的SQL 命令 694 24.9.2 直接执行SQL命令 697 25.9.3 调用SQL存储过程 699 24.10 小结 701 24.11 练习 702 第25章 数据绑定 703 25.1 安装SQL Server和示例数据 703 25.2 创建VS数据库项目 703 25.2.1 数据库对象 706 25.2.2 浏览数据库表和关系 707 25.3 给应用程序添加数据源 709 25.4 添加DataGridView 715 25.4.1 格式化DataGridView 716 25.4.2 添加不同类型的控件 718 25.4.3 查看生成的代码 719 25.4.4 更新数据库 720 25.5 小结 721 25.6 练习 721 第Ⅴ部分 其 他 技 术 第26章 .NET程序 725 26.1 组件 725 26.1.1 组件的优点 726 26.1.2 组件的简史 726 26.2 .NET程序的功能 727 26.2.1 自说明性 727 26.2.2 .NET程序和.NET Framework类库 727 26.2.3 跨语言的程序设计 728 26.2.4 COM和其他旧代码的 交互操作 728 26.3 程序的结构 729 26.3.1 查看程序的内容 731 26.3.2 清单 734 26.3.3 程序属性 737 26.4 调用程序 741 26.5 私有和共享程序 744 26.5.1 私有程序 744 26.5.2 共享程序 744 26.5.3 搜索程序 748 26.6 小结 748 26.7 练习 749 第27章 属性 750 27.1 什么是属性 750 27.2 反射 753 27.3 内置属性 756 27.3.1 System.Diagnostics.Condi tionalAttribute 757 27.3.2 System.ObsoleteAttribute 759 27.3.3 System.SerializableAttribute 760 27.3.4 System.Reflection.Assembly DelaySignAttribute 762 27.4 定制属性 766 27.4.1 TestCaseAttribute 766 27.4.2 System.AttributeUsage Attribute 770 27.4.3 使用属性生成数据库表 776 27.5 小结 790 第28章 XML文档说明 791 28.1 添加XML文档说明 791 28.1.1 XML文档说明的注释 793 28.1.2 使用类图添加XML文档 说明 799 28.1.3 生成XML文档说明文件 802 28.1.4 带有XML文档说明的应用 程序示例 805 28.2 使用XML文档说明 807 28.2.1 编程处理XML文档说明 807 28.2.2 用XSLT格式化XML 文档说明 809 28.2.3 NDoc 810 28.3 小结 811 28.4 练习 811 <br/>第29章 网络 812 <br/>29.1 联网概述 812 <br/>29.1.1 名称的解析 814 <br/>29.1.2 统一资源标识符 816 <br/>29.1.3 TCP和UDP 817 <br/>29.1.4 应用协议 817 <br/>29.2 网络编程选项 818 <br/>29.3 WebClient 819 <br/>29.4 WebRequest和WebResponse 821 <br/>29.5 TcpListener和TcpClient 828 <br/>29.6 小结 835 <br/>29.7 练习 836 <br/>第30章 GDI+简介 837 <br/>30.1 图形绘制概述 837 <br/>30.1.1 Graphics类 838 <br/>30.1.2 对象的删除 838 <br/>30.1.3 坐标系统 839 <br/>30.1.4 颜色 846 <br/>30.2 使用Pen类绘制线条 847 <br/>30.3 使用Brush 类绘制图形 849 <br/>30.4 使用Font 类绘制文本 851 <br/>30.5 使用图像进行绘制 855 <br/>30.5.1 使用纹理画笔进行绘图 857 <br/>30.5.2 使用钢笔绘制图像 858 <br/>30.5.3 双倍缓冲 860 <br/>30.6 GDI+的高级功能 862 <br/>30.6.1 剪切 862 <br/>30.6.2 System.Drawing.Drawing2D 863 <br/>30.6.3 System.Drawing.Imaging 864 <br/>30.7 小结 864 <br/>30.8 练习 864
内容简介 本书是C#领域久负盛名的经典著作,深入全面地叙述了C#编程语言和.NET平台核心,并以大量示例剖析相关概念。书中介绍了C#的各种语言构造、.NET 2.0的类、核心API、公共中间语言(CIL)、动态程序和ASP.NET扩展等内容;同时也介绍了.NET 3.0和.NET 3.5中新的编程API,包括WPF 、WCF和WF 的功能;另外,还介绍了最新的C# 3.0编程语言、LINQ编程技术、COM.NET 的互操作性以及平台无关的.NET开发。   本书由微软C# MVP Andrew Troelsen编写,历经多次修订,适合各层次.NET开发人员阅读。 作者简介 Andrew Troelsen世界级c#专家,微软VisuaI C#MVP。他是著名的微软技术咨询企业Intertech的合伙人和副总裁,该公司的客户包括微软、霍尼韦尔、美国宇航局等。他曾为MSDN网站和MacTech网站撰写了有关各种操作系统平台上.NET技术的文章,并经常在业界主要技术会议上发表f演讲和开设技术讲座。除本书外,他还撰写了COM and Net interoperabity和Visual Basic NET and the NET Platform An Advanced Guide等十多部NET技术方面的著作。 目录 第一部分 C#和.NET平台简介 第1章 NET之道  1.1 NET之前的世界  1.2 NET解决方案  1.3 NET平台构造块(CLR、CTS和CLS)简介  1.4 其他支持.NET的编程语言  1.5 NET程序概览  1.6 CTS  1.7 CLS  1.8 CLR  1.9 程序/命名空间/类型的区别  1.10 使用ildasm.exe探索程序  1.11 使用Lutz Roeder的Reflector来查看程序  1.12 部署.NET运行库  1.13 NET的平台无关性  1.14 小结  第2章 构建C#应用程序  2.1 NET Framework 3.5 SDK的作用  2.2 用csc.exe构建C#应用程序  2.3 使用TextPad构建.NET应用程序  2.4 使用Notepad++构建.NET应用程序  2.5 使用SharpDevelop构建.NET应用程序  2.6 使用Visual C# 2008 Express构建.NET应用程序  2.7 使用Visual Studio 2008构建.NET应用程序  2.8 其他.NET开发工具  2.9 小结  第二部分 C#核心编程结构 第3章 C#核心编程结构Ⅰ  3.1 一个简单的C#程序  3.2 有趣的题外话:System.Environment类的其他成员  3.3 System.Console类  3.4 系统数据类型和C#简化符号  3.5 System.String数据类型  3.6 窄化和宽化数据类型转换  3.7 C#迭代结构  3.8 条件结构和关系/相等运算符  3.9 小结  第4章 C#核心编程结构Ⅱ  4.1 方法和参数修饰符  4.2 成员重载  4.3 C#中的数组操作  4.4 枚举类型  4.5 结构类型  4.6 值类型和引用类型  4.7 值类型和引用类型:最后的细节  4.8 C#可空类型  4.9 小结  第5章 定义封装的类类型  5.1 C#类类型  5.2 类构造函数  5.3 this关键字的作用  5.4 static关键字  5.5 定义OOP的支柱  5.6 C#访问修饰符  5.7 第一个支柱:C#的封装支持  5.8 常量数据  5.9 只读字段  5.10 C#的分部类型  5.11 通过XML生成C#源代码的文档  5.12 查看劳动成果  5.13 小结  第6章 继承和多态  6.1 继承的基本机制  6.2 回顾Visual Studio类关系图  6.3 第二个支柱:继承  6.4 包含/委托编程  6.5 第三个支柱:C#的多态支持  6.6 基类/派生类的转换规则  6.7 超级父类:System.Object  6.8 小结  第7章 结构化异常处理  7.1 错误、bug异常  7.2 NET异常处理的作用  7.3 最简单的例子  7.4 配置异常的状态  7.5 系统级异常(System.SystemException)  7.6 应用程序级异常(System.ApplicationException)  7.7 处理多个异常  7.8 finally块  7.9 谁在引发什么异常 7.10 未处理异常的后果  7.11 使用Visual Studio调试未处理的异常  7.12 小结  第8章 对象的生命周期  8.1 类
内容简介 本书是C#领域久负盛名的经典著作,深入全面地叙述了C#编程语言和.NET平台核心,并以大量示例剖析相关概念。书中介绍了C#的各种语言构造、.NET 2.0的类、核心API、公共中间语言(CIL)、动态程序和ASP.NET扩展等内容;同时也介绍了.NET 3.0和.NET 3.5中新的编程API,包括WPF 、WCF和WF 的功能;另外,还介绍了最新的C# 3.0编程语言、LINQ编程技术、COM.NET 的互操作性以及平台无关的.NET开发。   本书由微软C# MVP Andrew Troelsen编写,历经多次修订,适合各层次.NET开发人员阅读。 作者简介 Andrew Troelsen世界级c#专家,微软VisuaI C#MVP。他是著名的微软技术咨询企业Intertech的合伙人和副总裁,该公司的客户包括微软、霍尼韦尔、美国宇航局等。他曾为MSDN网站和MacTech网站撰写了有关各种操作系统平台上.NET技术的文章,并经常在业界主要技术会议上发表f演讲和开设技术讲座。除本书外,他还撰写了COM and Net interoperabity和Visual Basic NET and the NET Platform An Advanced Guide等十多部NET技术方面的著作。 目录 第一部分 C#和.NET平台简介 第1章 NET之道  1.1 NET之前的世界  1.2 NET解决方案  1.3 NET平台构造块(CLR、CTS和CLS)简介  1.4 其他支持.NET的编程语言  1.5 NET程序概览  1.6 CTS  1.7 CLS  1.8 CLR  1.9 程序/命名空间/类型的区别  1.10 使用ildasm.exe探索程序  1.11 使用Lutz Roeder的Reflector来查看程序  1.12 部署.NET运行库  1.13 NET的平台无关性  1.14 小结  第2章 构建C#应用程序  2.1 NET Framework 3.5 SDK的作用  2.2 用csc.exe构建C#应用程序  2.3 使用TextPad构建.NET应用程序  2.4 使用Notepad++构建.NET应用程序  2.5 使用SharpDevelop构建.NET应用程序  2.6 使用Visual C# 2008 Express构建.NET应用程序  2.7 使用Visual Studio 2008构建.NET应用程序  2.8 其他.NET开发工具  2.9 小结  第二部分 C#核心编程结构 第3章 C#核心编程结构Ⅰ  3.1 一个简单的C#程序  3.2 有趣的题外话:System.Environment类的其他成员  3.3 System.Console类  3.4 系统数据类型和C#简化符号  3.5 System.String数据类型  3.6 窄化和宽化数据类型转换  3.7 C#迭代结构  3.8 条件结构和关系/相等运算符  3.9 小结  第4章 C#核心编程结构Ⅱ  4.1 方法和参数修饰符  4.2 成员重载  4.3 C#中的数组操作  4.4 枚举类型  4.5 结构类型  4.6 值类型和引用类型  4.7 值类型和引用类型:最后的细节  4.8 C#可空类型  4.9 小结  第5章 定义封装的类类型  5.1 C#类类型  5.2 类构造函数  5.3 this关键字的作用  5.4 static关键字  5.5 定义OOP的支柱  5.6 C#访问修饰符  5.7 第一个支柱:C#的封装支持  5.8 常量数据  5.9 只读字段  5.10 C#的分部类型  5.11 通过XML生成C#源代码的文档  5.12 查看劳动成果  5.13 小结  第6章 继承和多态  6.1 继承的基本机制  6.2 回顾Visual Studio类关系图  6.3 第二个支柱:继承  6.4 包含/委托编程  6.5 第三个支柱:C#的多态支持  6.6 基类/派生类的转换规则  6.7 超级父类:System.Object  6.8 小结  第7章 结构化异常处理  7.1 错误、bug异常  7.2 NET异常处理的作用  7.3 最简单的例子  7.4 配置异常的状态  7.5 系统级异常(System.SystemException)  7.6 应用程序级异常(System.ApplicationException)  7.7 处理多个异常  7.8 finally块  7.9 谁在引发什么异常 7.10 未处理异常的后果  7.11 使用Visual Studio调试未处理的异常  7.12 小结  第8章 对象的生命周期  8.1 类
©️2022 CSDN 皮肤主题:Age of Ai 设计师:meimeiellie 返回首页

打赏作者

tea_year

读后有收获可以支付宝请作者喝咖

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值