爱爱小说网 > 名著电子书 > c#高级编程(第6版)--前言 >

第1章

c#高级编程(第6版)--前言-第1章

小说: c#高级编程(第6版)--前言 字数: 每页3500字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




对于开发人员来说,把C#语言及其相关环境 Framework描述为多年来最重要的新技术一点都不夸张。提供了一种新环境。在这个环境中,可以开发出运行在Windows上的几乎所有应用程序,而C#是专门用于的新编程语言。例如,使用C#可以编写出动态Web页面、XML Web服务、分布式应用程序的组件、数据库访问组件、传统的Windows桌面应用程序,甚或可以联机/脱机运行的新型智能客户应用程序。本书介绍 Framework 3。5版。如果读者使用1。0、1。1、2。0或3。0版本编码,本书的一些章节就不适用。本书将标注出只适用于 Framework 3。5的新增内容。

不要被这个名称所愚弄,这个名称仅强调Microsoft相信分布式应用程序是未来的趋势,即处理过程分布在客户机和服务器上,但C#不仅仅是编写Internet或与网络相关的应用程序的一种语言,它还提供了一种编写Windows平台上几乎任何类型的软件或组件的方式。另外,C#和都对编写程序的方式进行了革新,更易于实现在Windows上的编程。

这是一个相当重要的声明。毕竟,我们都知道计算机技术的发展速度非常快,每年Microsoft都会推出新软件、新的编程工具或Windows的新版本,并宣称这些对开发人员都非常有用,和C#也不例外。
和C#的重要性

为了理解的重要性,了解一下近10年来出现的许多Windows技术的本质,会有一定的帮助。尽管所有的Windows操作系统在表面上看来完全不同,但从Windows 3。1(1992年)到Windows Server 2008,在内核上都有相同的Windows API。在我们转而使用Windows的新版本时,API中增加了非常多的新功能,但这是一个演化和扩展API的过程,并非替换它。

开发Windows软件所使用的许多技术和架构也是这样。例如,(ponent Object Model,组件对象模型)是作为OLE(Object Linking and Embedding,对象链接和嵌入)开发出来的。那时,它在很大程度上仅是把不同类型的Office文档链接在一起,所以利用它可以把一个小Excel电子表格放在Word文档中。之后,它逐步演化为、D(Distributed ,分布式组件对象模型)和最终的+。+是一种复杂的技术,它是几乎所有组件通信方式的基础,实现了事务处理、消息传输服务和对象池。

Microsoft选择这条道路的原因非常明显:它关注向后的兼容性。在过去的这些年中,第三方厂商编写了相当多的Windows软件,如果Microsoft每次都引入一项不遵循现有编码规则的新技术,Windows就不会获得今天的成功。

向后兼容性是Windows技术的极其重要的特性,也是Windows平台的一个长处。但它有一个很大的缺点:每次某项技术进行演化增加了新功能后,都会比它以前更复杂。

很明显,对此必须进行改进。Microsoft不可能一直扩展这些开发工具和语言,使它们越来越复杂,既要保证能跟上最新硬件的发展步伐,又要与20世纪90年代初开始流行的Windows产品向后兼容。如果要得到一种简单而专业化的语言、环境和开发工具,让开发人员轻松地编写优秀的软件,就需要一种新的开端。

这就是C#和的作用。粗略地说,是一种在Windows平台上编程的新架构—— 一种新API。C#是一种全新的语言,它可以利用 Framework及其开发环境中的所有新特性,以及在最近20年来出现的面向对象的编程方法。

在继续介绍前,必须先说明,向后兼容性并没有在这个演化进程中失去。现有的程序仍可以使用,也兼容现有的软件。软件组件在Windows上的通信,现在几乎都是使用实现的。因此,能够提供现有组件的包装器(wrapper),以便组件与之通信。

我们不需要学习了C#才能给编写代码,因为Microsoft已经扩展了C++,提供了一种新语言J#,还对Visual Baisc进行了很多改进,把它转变成了功能更强大的Visual Baisc ,并允许把用这些语言编写的代码用于环境。但这些语言都因有多年演化的痕迹,所以不能完全用现在的技术来编写。

本书将介绍C#编程技术,同时提供体系结构工作原理的必要背景知识。我们不仅会介绍C#语言的基础,还会给出使用各种相关技术的应用程序示例,包括数据库访问、动态的Web页面、先进的图形技术和目录访问等。唯一的要求是用户至少熟悉一门在Windows上使用的高级语言,例如C++、Visual Baisc或J++。
的优点

前面阐述了的优点,但并没有说它会使开发人员的工作更易完成。本节将简要讨论的改进特性。

●       面向对象的编程: Framework和C#从一开始就完全是基于面向对象的。

●       优秀的设计:一个基类库,它是以一种非常直观的方式设计出来的。

●       语言的无关性:在中,Visual Baisc 、C#、J#和Managed C++等语言都可以编译为通用的中间语言(Intermediate Language)。这说明,语言可以用以前没有的方式交互操作。

●       对动态Web页面的更好支持:ASP具有很大的灵活性,但效率不是很高,这是因为它使用了解释性的脚本语言,且缺乏面向对象的设计,从而导致ASP代码比较凌乱。使用一种新技术ASP,为Web页面提供了一种集成式的支持。使用ASP,可以编译页面中的代码,这些代码还可以使用高级语言来编写,例如C#或Visual Baisc 2008。

●       高效的数据访问:一组组件,统称为ADO,提供了对关系数据库和各种数据源的高效访问。这些组件也可以访问文件系统和目录。内置了XML支持,可以处理从非Windows平台导入或导出的数据。

●       代码共享:引入了程序集的概念,替代了传统的DLL,可以完美无暇地修补代码在应用程序之间的共享方式。程序集是解决版本冲突的正式系统,程序集的不同版本可以并存。

●       增强的安全性:每个程序集还可以包含内置的安全信息,这些信息可以准确地指出谁或哪种类型的用户或进程可以调用什么类的哪些方法。这样就可以非常准确地控制程序集的使用方式。

●       对安装没有任何影响:有两种类型的程序集,分别是共享程序集和私有程序集。共享程序集是可用于所有软件的公共库,私有程序集只用于某个软件。私有程序集是完全自包含的,所以安装过程非常简单,没有注册表项,只需把相应的文件放在文件系统的相应文件夹中即可。

●       Web服务的支持:集成了对开发Web服务的完全支持,用户可以开发出任何类型的应用程序。

●       Visual Studio 2008:附带了一个开发环境Visual Studio 2008,它可以很好地利用C++、C#、Visual Baisc 2008和ASP进行编码。Visual Studio 2008集成了Visual Studio  2002/2003/2005和Visual Studio 6环境中的各种语言专用的所有最佳功能。

●       C#:是使用的一种面向对象的新语言。

第1章将详细讨论体系结构的优点。
 Framework 3。5中的新增特性

 Framework的第1版(1。0版)在2002年发布,赢得了许多人的喝彩。 Framework的最新版本2。0在2005年发布,它对该架构进行了较大的改进。 Framework 3。5尽管不像 Framework 2。0那样是一个大的改进,但仍是一个相当重要的版本,包含了许多杰出的新功能。

Microsoft每次发布新的架构时,总是试图确保对已开发出的代码进行尽可能少的修改。到目前为止,Microsoft在这方面做得很成功。

注意:

一定要建立一个临时的服务器,来测试应用程序到 Framework 3。5的升级,而不是直接升级当前运行的应用程序。

下面将详细描述C# 2008和 Framework 3。5中的一些新变化,以及 Framework 3。5的开发环境——Visual Studio 2008的新增内容。
隐式类型化的变量

使用C# 2008,可以声明一个变量,让编译器隐式地决定该变量的类型。LINQ就使用这个功能处理所创建的查询。要使用这个新功能,需要使用var关键字:

var x = 5;

使用这个语句时,编译器会使用5来确定该变量的类型。这表示,该语句实际上应如下所示:

int x = 5;
自动实现的属性

在C# 2008中,声明属性这个常见任务变得更容易了。在以前的版本中,需要以如下方式声明属性:

private int _myItem;

public int MyItem



get {

return myItem



set {

myItem = value;





现在可以让编译器完成这个工作。不需要重复地把上面的结构放在代码中,只需使用自动实现属性的快捷方式:

public int MyProperty { get; set; }

使用这个语法会得到与前面较长示例相同的结果。编译器会把这个缩写形式转换为一般的格式,使代码更容易阅读和使用,并可以更快地编写解决方案。
对象和集合初始化器

C# 2008现在允许在初始化对象的属性时,把值赋予属性。例如,假定代码中有如下对象:

public class MyStructure



public int MyProperty1 { get; set; }

public int MyProperty2 { get; set; }



使用C# 2008,可以实例化MyStructure对象,如下所示:

MyStructure myStructure = new MyStructure() { MyProperty1 = 5;

MyProperty2 = 10 };

这个功能允许一次声明集合中的多个项:

List 《 int 》 myInts = new List 《 int 》 () { 5; 10; 15; 20; 25 };

在这个例子中,所有的数字都加到myInts对象上,就好像使用了Add()方法一样。
内置的ASP AJAX支持

可以使用 Framework 2。0创建ASP AJAX Web页面,但这需要额外的安装。在ASP 3。5和Visual Studio 2008中内置了ASP AJAX支持。

现在,用ASP和 Framework 3。5创建的每个页面都支持AJAX(在Webnfig文件中可以查看所有的Ajax配置)。在ASP控件工具箱中有一些新的服务器控件,可以给Web站点添加AJAX功能。ASP AJAX的更多内容可参见第39章。
 Language Integrated Query(LINQ) Framework

LINQ是最酷、最令人期待的特性,它提供了访问底层数据的功能。微软公司把LINQ提供为一个轻型的功能,为底层的数据库提供了一个强类型化的界面。LINQ为开发人员提供了在他们习惯的编码环境下编写代码的方式,并可以把底层数据作为对象来访问,以利用IDE、IntelliSense甚至调试功能。

使用LINQ可以查询对象、数据集合、SQL Server数据库、XML等。无论底层数据源是什么,都可以用相同的方式获得数据,因为LINQ提供了一个查询数据的结构化方式。

下面的代码获得伪XML文档,提取XML文件中所有的顾客姓名:

XDocument xdoc = XDocument。Load(@〃C:Customers。xml〃);

var query = from people in xdoc。Descendants(〃CustomerName〃)

select people。Value;

Console。WriteLine(〃{0} Customers Found〃; queryunt());

Console。WriteLine();

foreach (var item in query)



Console。WriteLine(item);



提示:

第11、27和29章介绍了LINQ的各个方面。
Visual Studio中的多目标

在许多情况下,开发人员现在使用多个应用程序,它们分别面向 Framework 2。0、3。0和3。5。继续在开发计算机上保留Visual Studio的多个版本,以使用 Framework的多个版本似乎很愚蠢。

因此,Visual Studio的最新版本2008现在支持使用自己需要的 Framework版本。创建新的应用程序时,可以选择创建面向 Framework 2。0、3。0或3。5的应用程序。
支持最新的应用程序类型

在 Framework 3。0发布不久,就出现了一些非常新的功能。在这个版本中,允许使用Windows Presentation Foundation(WPF)建立新的应用程序类型,以及基于Windows munication Foundation(WCF)和Windows Workflow Foundation(WF)的应用程序和库。

在Visual Studio 2008中,可以创建所有这些应用程序,它们现在都可以用作项目类型,并带有新控件、Visual Studio向导和功能。
C#的优点

C#在某种程度上可以看作是面向Windows环境的一种编程语言。在过去的十几年中,Microsoft给Windows和 Windows API添加了许多功能,Visual Baisc 2008和C++也经历了许多变化。虽然Visual Baisc和C++最终已成为非常强大的语言,但这两种语言也存在问题,因为它们保留了原来的一些内容。

对于Visual Basic 6及其早期版本来说,它的主要优点是很容易理解,许多编程工作都很容易完成,基本上隐藏了Windows API和组件结构的内涵。其缺点是Visual Basic从来没有实现真正意义上的面向对象,所以大型应用程序很难分解和维护。另外,因为Visual Baisc的语法继承于BASIC的早期版本(BASIC主要是为了让初学者更容易理解,而不是为了编写大型商业应用程序),所以不能真正成为结构化或面向对象的编程语言。

另一方面,C++置根于ANSI C++语言定义。它与ANSI不完全兼容,因为Microsoft是在ANSI定义标准化之前编写C++编译器的,但已经相当接近了。但是,这导致了两个问题。其一,ANSI C++是在十几年前的技术条件下开发的,因此不支持现在的概念(例如Unicode字符串和生成XML文档),某些古老的语法结构是为以前的编译器设计的(例如成员函数的声明和定义是分开的)。其二,Microsoft同时还试图把C++演变为一种用于在Windows上执行高性能任务的语言,为此不得不在语言中添加大量Microsoft专用的关键字和各种库。其结果是在Windows中,该语言成了一种非常杂乱的语言。让C++开发人员说说字符串有多少种定义就可以说明这一点:char*、LPTSTR、string、CString (MFC 版本)、CString (WTL 版本)、wchar_t*、 OLECHAR*等。

现在进入时代—— 一种全新的环境,它对这两种语言都进行了新的扩展。Microsoft给C++添加了许多Microsoft专用的关键字,并把Visual Baisc演变为Visual Baisc ,再演变为Visual Baisc 2008,保留了一些基本的Visual Baisc语法,但在设计上完全不同,从实际应用的角度来看,Visual Baisc 2008是一种新语言。

在这里,Microsoft决定给开发人员另一个选择—— 专门用于、具有新起点的语言, 即C#。Microsoft在正式场合把C#描述为一种简单、现代、面向对象、类型非常安全、派生于C和C++的编程语言。大多数独立的评论员对C#的说法是“派生于C、 C++ 和Java”。这种描述在技术上是非常准确的,但没有涉及到该语言的真正优点。从语法上看,C#非常类似于C++和Java,许多关键字都是相同的,C#也使用类似于C++和Java的块结构,并用括号({})来标记代码块,用分号分隔各行语句。对C#代码的第一印象是它非常类似于C++或Java代码。但在这些表面的类似性后面,C#学习起来要比C++容易得多,但比Java难一些。其设计与现代开发工具的适应性要比其他语言更高,它同时具有Visual Basic的易用性、高性能以及C++的低级内存访问性。C#包括以下一些特性:

●       完全支持类和面向对象编程,包括接口和

返回目录 下一页 回到顶部 3 4

你可能喜欢的