购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 C#语言

C#(C sharp)是由C和C++发展而来的面向对象的编程语言,它是一种现代的、安全的、稳定的、简单的语言。它在继承C和C++强大功能的同时简化和现代化了C++在类、命名空间、方法重载和异常处理等领域的处理方法。摒弃了C++的复杂性,使它更易用、更少出错,减少了C++的一些特性,不再有宏、模板和多重继承。这些功能的改善使得C#语言更易于学习和使用。另外,C#还综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。并且C#成为ECMA与ISO标准规范。C#看似基于C++写成,但又融入其他语言(如Delphi、Java、VB等)的特性。

在C#之前,C和C++已经成为在软件的开发领域中使用最广泛的语言。它们为开发人员提供了十分灵活的操作,但同时也因此牺牲了一定的效率及相应的易用性,比如开发同一应用程序,C和C++与Visual Basic等语言相比需要更长时间来开发,且Visual Basic操作更为简单。所以开发人员需要一种简单易用、高效灵活的开发语言,它要和最新的网络标准保持同步并且能和已有的应用程序良好整合的环境,且在快速开发的同时又可以调用底层平台的所有功能。

C#是微软对这一问题的解决方案。C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通信领域。

C#提出了纯粹的面向对象概念,并在语言特性中展现得淋漓尽致。C++并非纯面向对象的,为了和C兼容及提供更高的执行效率,它保留了很多模块化的东西。Java尽管号称是面向对象的,但实际上,对于对象所应该具备的三种构成结构——属性、方法和事件,Java仅提供了方法,其他两种结构都要通过方法来模拟。在C#中,所有面向对象的概念都在语言中得到了非常好的体现。同时,C#还通过类类型、值类型和接口类型的概念形成了统一的类型系统。C#使用了大家所熟知的语法实现了方法,以至于很多人认为C#和Java、C++等面向对象语言“非常相像”,这使得从使用其他面向对象语言转到使用C#的过程非常简单。

最重要的是,C#不但保持了C/C++原有的强大功能和良好的底层编程能力,还提高了程序开发效率,使得C++程序员可以高效地开发程序。C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快地转向C#。C#主要有以下特点。

1.C#的效率与安全性

C#的使用不但使开发人员可以快速高效地开发程序,同时C#还提供了强大的安全性,比如,类型安全、资源自动回收,这可以帮助开发人员消除大量程序错误。

在程序开发过程中,程序员开发人员常会犯一些最简单的小错误,比如忘了初始化变量,而在C++中,往往就是这些小错误带来了难以预料的问题,有些甚至需要很长时间来寻找和解决。一旦一个程序作为产品来使用,最简单的错误纠正起来也可能要付出极其昂贵的代价。C#的现代化设计能够消除很多常见的C++编程错误。例如,资源回收减轻了程序员内存管理的负担;不能使用没有初始化的变量,当使用一个没有初始化的变量时,编译器会给出相关提示。这样能够避免由于使用不经初始化的变量计算结果而导致的错误,而程序开发人员还不知道这些奇怪的结果是如何产生的;C#取消了不安全的类型转换。

由于C#提高了程序开发的安全性,使得程序员编写与维护那些解决复杂商业问题的程序就更方便了。它使开发者能用更少的代码做更多的事,同时也不易出错。

2.C#支持现有的网络编程新标准

新的应用程序开发模型意味着越来越多的解决方案依赖于新出现的网络标准,例如HTML、XML、SOA等。现存的开发工具往往都是早于Internet出现的,或者是在广大程序员所熟知的网络还处于孕育时期出现的,所以,它们一般无法很好地支持最新的网络技术。

XML网络服务框架可以使现有的XML网络服务对程序员来说就和C#对象一样。这样,程序员就可以方便地使用他们已有的面向对象的编程技巧来开发利用现有的XML网络服务。XML正逐渐成为在网络上传输结构化数据的标准。这种数据集合往往非常小,为提高性能,C#允许把XML数据直接映射到struct数据类型,而不是class,这样对处理少量的数据非常有效。

C#程序员可以在Microsoft.NET平台上事半功倍地构建应用程序的扩展框架。C#包含了内置的特性,使任何组件可以轻松转化为XML网络服务,通过Internet被任何操作系统上运行的任何程序调用。

C#语言允许类型定义的、扩展的元数据。这些元数据可以应用于任何对象。项目构建者可以定义领域特有的属性并把它们应用于任何语言元素——类、接口等。然后,开发人员可以编程检查每个元素的属性。这样,很多工作都变得方便多了,比如编写一个小工具来自动检查每个类或接口是否被正确定义为某个抽象商业对象的一部分,或者只是创建一份基于对象的领域特有属性的报表。定制的元数据和程序代码之间的紧密对应有助于加强程序的预期行为和实际实现之间的对应关系。

3.C#的扩展交互性

作为一种自动管理的、类型安全的环境,C#适合于大多数企业应用程序。但实际的经验表明。有些应用程序仍然需要一些底层的代码,要么是因为基于性能的考虑,要么是因为要与现有的应用程序接口兼容。这些情况可能会迫使开发者使用C++,即使他们本身宁愿使用更高效的开发环境。

C#采用以下对策来解决这一问题,内置对组建对象模型(COM)和基于Windows的API的支持;允许有限制地使用纯指针(Native Pointer)。在C#中,每个对象都自动生成为一个COM对象,开发者不再需要显式地实现IUnknown和其他COM接口,这些功能都是内置的。类似地,C#可以调用现有的COM对象,无论它是由什么语言编写的。C#包含了一个特殊的功能,使程序可以调用任何纯API。在一段特别标记的代码中,开发者可以使用指针和传统C/C++特性,如手工的内存管理和指针运算,这是其相对于其他环境的极大优势。这意味着C#程序员可以在原有的C/C++代码的基础上编写程序,而不是彻底放弃那些代码。无论是支持COM还是纯API的调用,都是为了使开发者在C#环境中直接拥有必要的强大功能。

4.C#对版本更新的支持

更新软件组件是一项很容易出错的工作,因为代码的修改可能无意间改变原有程序的语义。为协助开发者进行这项工作,C#为版本的更新提供内在的支持。例如,方法重载必须显式声明,这样可以防止编码错误,保证版本更新的灵活性。还有一个相关的特性就是对接口和接口继承的内在支持。这些特性使得C#可以开发复杂的框架并且随着时间不断发展更新它。从总体来说,这些特性使得开发程序项目的后续版本的过程更加健壮,从而减少后续版本的开发成本。 F8adVyNUIPk3t6cyDEB0h00MIE8pn5eiwXRvOJ3ZGvZKynZFtMbqkazcZgyCuyTY

点击中间区域
呼出菜单
上一章
目录
下一章
×