在呈现出更多的功能之前,我想停下来并在下面说明C#至关重要的各种要素。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
简单
现代
面向对象
类型安全
版本控制
兼容
简单
在你使用C++时,您最害怕的是什么?我想大多数人的答案会是:指针!
没错,是指针,功能强大的指针、危机四伏的指针!
一个让程序员们震惊的事实是:在C#中,没有了指针。默认地,您的代码工作在一种受控的环境中(谁,是谁在控制我的代码?),在那里不允许进行直接存取内存等不安全的操作。
除此之外,还有很多变化,都无不体现了C#语言的简约之美。
现代
有很多语言,包括经典的C,细细想来,它们都没有因为时代的变化而发生多少跟近,有的甚至二十年来不曾有任何修正。看一看SQL Server 2000中的decimal(金融),再比较C中的int,您就会发现我说的是多么有道理!
C#语言在他的数据类型、垃圾回收、内存压缩、异常处理等诸多方面都显示出了它绝对的现代性。
面向对象
一种新语言不支持面向对象的功能是不可想象的。C#当然支持所有关键的面向对象的概念,如封装、继承和多态性。
您一开始必须关注的事,就是不再有全局函数、变量或者是常量。这一点对于C++来说是非常令其尴尬的,但这才是真正纯粹的面向对象(请C++程序员们解释一下main函数属于哪个类)。这是面向过程向面向对象长达十多年的过渡之后,尘埃落定的产物。
一个典型的例子是:
3.ToString(); //可以得到一个字符串”3”
类型安全
纲要性的问题:C#实施最严格的类型安全。请您回答以下问题:
l 使用过没有初始化的变量没有?
l 编写的程序出过数组越界问题没有?
l 类型转换时检查过可行性吗?
l i/j时忘记判断过j!=0吗?
以上这些,是一个C++程序员编程时所必须小心谨慎的,但是在类型安全的C#语言中,想出现以上错误是很难的,您可以把您的注意力集中到一些更重要的地方了,比如说商业逻辑。
版本控制
在过去的几年中,几乎所有的程序员都至少有一次不得不涉及到众所周知的"DLL地狱"问题。该问题起因于多个应用程序都安装了相同DLL名字的不同版本。有时,老版本的应用程序可以很好地和新版本的DLL一起工作,但是更多的时候它们会中断运行。现在的版本问题真是令人头痛。
就象您将在今后所看到的,C#可以最好地支持版本控制。尽管C#不能确保正确的版本控制,但是它可以为程序员保证版本控制成为可能。有这种支持,一个开发人员就可以确保当他的类库升级时,仍保留着对已存在的客户应用程序的二进制兼容。
兼容
一种新语言的出现,总是要顾及对之前的技术体系是否兼容的问题,比如说Java,它的出现彻底背弃了之前处于统治地位的COM技术体系,以至于Java现在很难去瓦解VC、VB和Delphi等阵营,它只能在此之外的其他技术和市场领域扎根,比如说Web、服务器、嵌入式编程等。如果Java在当初就能保持对COM技术体系的兼容的话,可能今天全球就已经是Java的天下了!
完成这一工作的是DotNet FrameWork,我们不难看到,越来越多的VC、VB、Delphi的程序员们转到了VC.Net、VB.Net和Delphi.Net,史上还没有哪一次的兼容之作能对软件领域产生如此大的冲击。
作为DotNet FrameWork的首推语言和佼佼者,C#自然也很大程度上保持了对外界技术的兼容!