日期:2011-05-16  浏览次数:20421 次

C#介绍
我们知道,C和C++已经成为广泛的应用在商用软件的开发中的开发语言。但是C和C++的灵活性是牺牲了开发效率的。如果与其他的开发语言相比(比如说VB,Delphi),相同功能的C/C++软件通常会需要更长的开发周期,要写更多的代码。正是由于C/C++开发的复杂性和需要较长的开发周期,所以许多C/C++开发人员都在寻找一种可以在功能和开发效率间提高更多平衡的开发语言。 于是Microsoft想到了C#(发音为 C Sharp),并推出了C#。2000年6月 微软发布C#语言和.NET平台。C#语言是一种强类型的、面向对象的语言、它具有语法简单、表达力强的特点;而.NET平台则是构成微软的“.NET计划”的基石。.NET平台的核心包括两方面 一方面就是著名的通用语言运行机(Common Language Runtime) 虽然这个名词起得晦涩了点 不过大家可以拿它和Java的虚拟机来作比较,二者完成的任务大致相同,另一方面就是一大堆通用函数库,这些库函数可以被多种语言调用,并且通过编译都产生一种共同的中间语言(Intermediate Language),这种语言也可以拿Java的字节码来类比,虽然完成的方式有些不一样。C#是一种先进,面向对象的语言,通过C#可以让开发人员快速的建立大范围的基于MS网络平台的应用,并且提供大量的开发工具和服务帮助开发人员开发基于计算和通信的各种应用。 正是由于C#是一种面向对象的开发语言,所以C#可以大范围的适用于高层商业应用和底层系统的开发。即使是通过简单的C#构造也可以各种组件方便的转变为基于WEB的应用,并且能够通过Internet被各种系统或是其他开发语言所开发的应用调用。
它有以下的特点: 开发效率与安全性
目前的各种基于WEB应用的软件开发向传统的商业应用软件开发提出了挑战,开发者被组织起来开发具有更短开发周期的各种应用,并且需要能够提供更好的可修正性,而不是建立一个可以长久使用的软件系统。
C#的设计正是充分考虑了这些因素。C#会帮助开发者通过更少的代码完成相同的功能,并且能够更好的避免错误发生。
与WEB开发相结合
新的开发模式意味着需要更好的利用现有的各种WEB标准,例如HTML,XML,SOAP(简单对象存取协议)。现存的开发工具是在Internet出现前或是未得到充分应用前出现的,所以都不能很好的适应目前WEB技术的开发需要。
C#开发者可以方便的在M$网络平台上扩展自己的应用。C#可以将任何组件转变为WEB服务,并且可以被运行于Internet上的任何平台的任何应用调用,重要的是C#对这一特性提供了内置的支持。
更重要的一点,WEB服务框架可以让任何WEB服务都看起来类似于C#的内置对象,所以可以让开发人员在开发过程中继续使用他们已经具备的面向对象的开发方法和技巧。
此外C#还拥有许多其他特性使自己成为最出色的Internet开发工具。例如,XML目前已经成为网络中数据结构传送的标准,为了提高效率C#将允许直接将XML数据映射成为结构。这样的话可以有效的处理各种数据。
减小开发中的错误
即使是优秀的C/C++开发人员都难于避免在编码过程出现一些常见错误,比如错误的初始化一个变量,而这种错误将有可能导致各种不可以预知的错误,并且难于被发现。如果一旦错误在发现前被投入生产环境,排除这些错误将会付出昂贵的代价。而C#的先进设计思想可以消除C/C++开发中的许多常见错误,比如:
垃圾收集机制将减轻开发人员对内存的管理负担。 C#中的变量将自动根据环境被初始化。 变量是类型安全的。 使用C#将会使开发人员更加轻易的开发和维护各种商业应用。
提供内置的版本支持来减少开发费用
更新软件系统中的组件(模块)将会是一种容易产生错误的工作,在代码修改过程中可能对现存的软件产生影响。为了帮助开发人员处理这些问题,C#在语言中内置了版本控制功能。例如:函数重载必须被显式的声明(这种情况在C++和JAVA中时常发生),这可以防止代码级错误和保留版本化的特性。另一个相关的特性是接口和接口继承的支持。这些特性可以保证复杂的软件可以被方便的开发和升级。
总结起来,这些特性可以帮助开发更强壮的软件后继版本和减轻开发费用。
功能强,易于表现,灵活
更好的结合商业应用中的流程与软件实现
为了更好实现公司的各种商业计划,在软件系统中必须在商业流程和软件实现间有紧密的联系。但是大多数的开发语言都不能轻易的将各种应用逻辑与代码相联系。例如,开发人员会使用各种注释来标明各种类所代表抽象商业对象。C#允许使用在任何对象上使用预定义数据或是经过扩展的元数据。在系统结构中可以使用区域属性(译者:类似NT的网络域结构),并且将这些属性添加到类,接口或者其他元素上。开发者可以独立的测试各种元素上的属性。这将会使得一些如同收集区域中对象属性,或是编写自动工具来保证的区域中的类,接口是否被正确定义的类似工作变得简单。
可扩展的协作能力
虽然管理性强,透明型好,类型安全的开发环境对大多的商业应用都适合,但现实的经验告诉我们一些应用出于执行效率或是与现存的应用接口API相结合的原因需要使用原有的开发方式来进行编码。也正是如此,许多C/C++开发人员宁愿放弃使用一些可以提高开发效率的开发工具。C#通过下面的方法来解决这些问题:
内置支持COM模型和Windows平台API。
允许有限制的使用指针。
在C#中任何对象都会自动成为COM对象,开发者不再需要显式的实现IUnknown和其他一些COM接口,同时也可以方便而自然的使用现存的COM对象,而不需要关心这些COM对象是否使用C#开发。
对于使用C#的开发人员来讲,C#允许开发人员调用OS所提供的API。在经过标记的代码区域内使用指针并手工管理内存分配。这可以让C/C++开发人员更快的熟悉和转向C#和并且不需要放弃在以前开发中所形成的开发习惯,而且以前的C/C++代码依然可以被重用。无论是对于COM的支持还是对于API调用的支持都是为了为开发人员提供足够的开发控制能力。 
 


C#和Java
二者都编译成跨平台的,跨语言的代码,并且代码只能在一个受控制的环境中运行
自动回收垃圾内存,并且消除了指针(在C#中可以使用指针,不过必须注明unsafe关键字)
都不需要头文件,所有的代码都被“包(package)”限制在某个范围内,并且因为没有头文件,所以消除了类定义的循环依赖
所有的类都是从对象派生出来,并且必须使用New关键字分配内存
用对象加锁的方式来支持多线程
都具有接口(interface)的概念
继承类的时候不会以某种特定的访问权限来继承??
没有全局函数或者常量,一切必须属于类??
数组或者字符串都自带长度计算和边界检查??
只使用“.”操作符,没有“->”和“::”??
“null”,“boolean”和“bool”成为了关键字??
任何变量均在使用前进行初始化??
不能使用整数来返回到if条件语句中,必须使用布尔值??
“Try”模块後可以有“finally” ??


总之,C#是一种先进的,面向对象的开发语言,并且能够方便快捷的MS网络平台建立各种应用和建立能够在网络间相互调用的WEB服务。从开发语言的角度来讲C#可以更好帮助开发人员避免错误,提高工作效率,而且同时具有C/C++的强大功能。