c#( 四 )


c#

文章插图
Microsoft Visual C# .NET Step by Step C# 2.0的另一个突出的特性就是匿名方法,用来取代一些短小的并且仅出现一次的委託,使得语言结构更加紧凑 。匿名方法除了可以使得事件处理器的编写更加精简以外,还将开发者带入了程式设计的一个新的领域——函式式编程,曾经有高人就用匿名方法结合泛型编程实现了函式式编程中的重要结构—— Lambda 表达式 。儘管这种实现显得很繁琐而且不易理解,但毕竟是实现了 。C#3.0-(研发代号“Orcas”)2005年9 月份的PDC大会——C#3.0(研发代号“Orcas”——魔鬼)的技术预览版 。说到C# 3.0,就不得不提一下微软的LINQ 项目,LINQ(语言集成查询,Language Integrated Query)提出了一种通过面向对象语法来实现对非面向对象数据源的查询技术,可查询的数据源从关係型资料库延伸到一般意义上的集合(如数组和列表)以及XML 。而C# 3.0则是率先实现了LINQ的语言 。
c#

文章插图
c# 本质论在C# 3.0中,可以用类似于SQL语句的语法从一个数据源中轻鬆地得到满足一定条件的对象集合 。例如要查找一个字元串数组names中所有长度大于5的字元串,就可以写:var longname = from n in names wheren.Length > 5 select n;这样就得到一个新的字元数组longname,其中包含了所需要的结果 。这种语句称作查询语句,与SQL语句唯一的区别是C#中的查询语句往往把select子句放到最后(这反而倒有些类似于中文的阅读顺序了) 。初次看到这样一个语句,可能会有很大疑问:这还是C#语言吗?这的确是合乎语法规则的C#代码,而且编译器可以识别这种语法 。然而实际上,C#编译器并不会对这种语法进行实际的的编译,而是将其翻译为正常的方法调用 。C# 4.0动态编程C# 4.0 新增 dynamic关键字,提供动态编程(dynamic programming),把既有的静态物件标记为动态物件,类似javascript, Python 或 Ruby 。发展前景根据育龙网资料评价显示:C#几乎集中了所有关于软体开发和软体工程研究的最新成果:面向对象、类型安全、组件技术、自动记忆体管理、跨平台异常处理、版本控制、代码安全管理…… 。儘管像很多人注意到的一样,罗列上述特性时,总是让人想到JAVA,然而C# 确实走得更远 。但现实的情况是,非技术的因素往往更能决定一个产品的未来,尤其在计算机软体的历史上,技术卓越的产品,如OS/2、Mac OS、UNIX等,都败在了Windows漂亮的界面上 。JAVA的用户主要是网路服务的开发者和嵌入式设备软体的开发者,嵌入式设备软体不是C# 的用武之地,而在网路服务方面,C# 的即时编译和本地代码Cache方案比JAVA虚拟机具有绝对的性能优势 。何况C# 一旦成为一个像C++ 一样的公共的标準,软体开发商既可以省去JAVA的许可证费用,也不必担心成为微软的奴隶,那些反微软的人士和主张厂商独立的人士可能也不会有什幺意见 。这可能正是微软所期待的 。如果把C# 和 JAVA 在网路服务领域的争夺比作未来制空权的争夺,那幺C# 和传统通用快速开发工具——VB、DELPHI等的较量将是地地道道的白刃战 。可能最惨的程式设计师就是VB程式设计师,在微软,VB就像离任的柯林顿,不但失去了所有的光辉,而且乱事缠身 。其实在程式语言中真正的霸主多年来一直是C++,所有的作业系统和绝大多数的商品软体都是用C++作为主要开发语言的 。JAVA的程式设计师绝大多数也是C++的爱好者,PHP的成功里面也有类似C++的语法的功劳 。在作业系统、设备驱动程式、视频游戏等领域,C++在很长的时间内仍将占据主要地位,而在数量最大的套用软体的开发上,C# 很可能取代C++的位置 。首先,C# 和JAVA一样,简直就是照搬了C++的部分语法,因此,对于数量众多的C++程式设计师学习起来很容易上手,另外,对于新手来说,比C++要简单一些 。其次,Windows是占垄断地位的平台,而开发Windows套用,当然微软的声音是不能忽略的 。最重要的是,相对于C++,用C# 开发套用软体可以大大缩短开发周期,同时可以利用原来除用户界面代码之外的C++代码 。但是,C# 也有弱点 。首先,在一些版本较旧的Windows平台上,C# 的程式还不能运行,因为C# 程式需要 .NET运行库作为基础,而 .NET运行库作为Windows(XP及以后版本)的一部分发行, Windows Me 和 Windows 2000用户只能以Service Pack的形式安装使用 。其次,C# 能够使用的组件或库还只有 .NET 运行库等很少的选择,没有丰富的第三方软体库可用,这需要有一个过程,同时各软体开发商的支持也很重要 。第三,JAVA的成功因素里有一些是反微软阵营的吹捧,虽然“只写一次,到处运行”只是一句口号,但毕竟已经是一种成熟的技术 。而C# 的鼓吹者只有名声不佳的微软,且只能运行在Windows上 。实际上这两种语言都不是不可替代的,理智的说,对软体开发商而言,什幺用的最熟什幺就是最好的工具 。尤其对C++的使用者,C# 没有带来任何新东西,因为.NET运行库在C++中也可以使用,没有要换的绝对的理由 。C# 将不可避免地崛起,在Windows平台上成为主角,而JAVA将在UNIX、Linux等平台上成为霸主,C++ 将继续在系统软体领域大展拳脚 。非常有意思的是,这些语言的语法极其接近,因为JAVA和C# 都是由C++发展而来的 。其他的开发工具当然还会在相当长的时间里继续他们的旅程,不过在市场份额上,将不可避免地受到冲击 。