c# getresponsestream返回byte[]_C#的关键字,版本和发展前景

关键字

     abstract:可以和类、方法、属性、索引器及事件一起使用,标识一个可以扩展但不能被实体化的、必须被实现的类或方法。as:一个转换操作符,如果转换失败,就返回null。

     base:用于访问被派生类或构造中的同名成员隐藏的基类成员。catch:定义一个代码块,在特定类型异常抛出时,执行块内代码。          checked:既是操作符又是语句,确保编译器运行时,检查整数类型操作或转换时出现的溢出。const:标识一个可在编译时计算出来的变量值,即一经指派不可修改的值。

16a27996c309e2d1cfe224df456ac888.gif

     delegate:指定一个声明为一种委托类型。委托把方法封装为可调用实体,能在委托实体中调用。enum:表示一个已命名常量群集的值类型。event:允许一个类或对象提供通知的成员,他必须是委托类型。explicit:一个定义用户自定义转换操作符的操作符,通常用来将内建类型转换为用户定义类型或反向操作,必须再转换时调用显示转换操作符。extern:标识一个将在外部(通常不是c#语言)实现的方法。

     finally:定义一个代码块,在程序控制离开try代码块后执行。参见try和catch。fixed:在一个代码块执行时,在固定内存位置为一个变量指派一个指针。foreach:用于遍历一个群集的元素。goto:一个跳转语句,将程序执行重定向到一个标签语句。

     implicit:一个操作符,定义一个用户定义的转换操作符,通常用来将预定义类型转换为用户定义类型或反向操作,隐式转换操作符必须在转换时使用。

16a27996c309e2d1cfe224df456ac888.gif

     interface:将一个声明指定为接口类型,即实现类或构造必须遵循的合同。internal:一个访问修饰符。namespace:定义一个逻辑组的类型和命名空间。operator:用来声明或多载一个操作符。out:标识一个参数值会受影响的参数,但在传入方法时,该参数无需先初始化。params:声明一个参数数组。如果使用,必须修改指定的最后一个参数,允许可选参数。

     readonly:标识一个变量的值在初始化后不可修改。ref:标识一个参数值可能会受影响的参数。sealed:防止类型被派生,防止方法和property被覆载。

     sizeof:一个操作符,以byte为单位返回一个值类型的长度。stackalloc:返回在堆上分配的一个内存块的指针。struct:是一种值类型,可以声明常量、字段、方法、property、索引器、操作符、构造器和内嵌类型。

16a27996c309e2d1cfe224df456ac888.gif

     throw:抛出一个异常。try:异常处理代码块的组成部分之一。try代码块包括可能会,抛出异常的代码。参阅catch和finally关键字。typeof:一个操作符,返回传入参数的类型。unchecked:禁止溢出检查。unsafe:标注包含指针操作的代码块、方法或类。

     using:当用于命名空间时,using关键字允许访问该命名空间中的类型,而无需指定其全名。也用于定义finalization操作的范围。virtual:一个方法修饰符,标识可被覆载的方法。volatile:标识一个可被操作系统、某些硬件设备或并发线程修改的attribute。

16a27996c309e2d1cfe224df456ac888.gif

2bff1363f3a4dbd37c73c0c348719d7c.png

版本介绍

     C# 1.0-纯粹的面向对象在2003年5月,微软推出了Visual Studio .NET 2003,同时也发布了C#的改进版本——C# 1.1。这一时期的C#(以下称为C# 1.x)提出了纯粹的面向对象概念。C++并非纯面向对象的,为了和C兼容以及提供更高的执行效率,它保留了很多模块化的东西。C#还通过类类型、值类型和接口类型的概念形成了统一的类型系统。

     尽管C# 1.x提供了如此多的新鲜概念,但实际上,这些概念都是由CLI提出的。因此当将一个C#源程序编译为可执行文件时,编译器做的工作相对而言并不多。需要编译器代劳的是要将一个简单的委托定义语句翻译为一个继承System.MulticastDelegate类型定义。

16a27996c309e2d1cfe224df456ac888.gif

     C# 2.0-泛型编程新概念微软在2004年的6月份发布了Visual Studio2005的第一个Beta 版,同时向开发者展示了C#语言的2.0版本。2005年4月,微软发布了Visual Studio 2005 Beta2,这已经是具备了几乎全部功能的VisualStudio,包括的产品有SQL Server2005、Team Foundation Server和TeamSuite。这时的C#编译器已经能够处理C# 2.0中所有的新特性。C# 2.0为开发者带来的最主要的特性就是泛型编程能力。

     和面向对象思想一样,泛型思想也是一种已经成熟的编程思想,但依然是没有哪一种主流开发语言能够支持完备的泛型概念。这主要是因为泛型的概念在一定程度上对面向对象概念进行冲击,同时,由于在编译期间对类型参数的完全检测很难做到,很多问题会被遗留到运行时。C# 2.0别出心裁,对泛型类型参数提出了“约束”的新概念,并以优雅的语法体现在语言之中。

     有了约束,结合编译器强大的类型推断能力,可以在编译时发现几乎所有“危险”的泛型应用。C# 2.0的另一个突出的特性就是匿名方法,用来取代一些短小的并且仅出现一次的委托,使得语言结构更加紧凑。匿名方法除了可以使得事件处理器的编写更加精简以外,还将开发者带入了程序设计的一个新的领域——函数式编程,曾经有高人就用匿名方法结合泛型编程实现了函数式编程中的重要结构—— Lambda 表达式。尽管这种实现显得很繁琐而且不易理解,但毕竟是实现了。

16a27996c309e2d1cfe224df456ac888.gif

    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# 3.0中,可以用类似于SQL语句的语法从一个数据源中轻松地得到满足一定条件的对象集合。

     例如要查找一个字符串数组names中所有长度大于5的字符串,就可以写:var longname = from n in names wheren.Length > 5 select n;这样就得到一个新的字符数组longname,其中包含了所需要的结果。这种语句称作查询语句,与SQL语句唯一的区别是C#中的查询语句往往把select子句放到最后(这反而倒有些类似于中文的阅读顺序了)。

     初次看到这样一个语句,可能会有很大疑问:这还是C#语言吗?这的确是合乎语法规则的C#代码,而且编译器可以识别这种语法。然而实际上,C#编译器并不会对这种语法进行实际的的编译,而是将其翻译为正常的方法调用。

16a27996c309e2d1cfe224df456ac888.gif

     C# 4.0动态编程C# 4.0 新增 dynamic关键字,提供动态编程(dynamic programming),把既有的静态物件标记为动态物件,类似javascript, Python 或 Ruby。

16a27996c309e2d1cfe224df456ac888.gif

cd727053e3a421caea711e1064418e4d.png

发展前景


     根据育龙网资料评价显示:C#几乎集中了所有关于软件开发和软件工程研究的最新成果:面向对象、类型安全、组件技术、自动内存管理、跨平台异常处理、版本控制、代码安全管理……。尽管像很多人注意到的一样,罗列上述特性时,总是让人想到JAVA,然而C# 确实走得更远。但现实的情况是,非技术的因素往往更能决定一个产品的未来,尤其在计算机软件的历史上,技术卓越的产品,如OS/2、Mac OS、UNIX等,都败在了Windows漂亮的界面上。

     JAVA的用户主要是网络服务的开发者和嵌入式设备软件的开发者,嵌入式设备软件不是C# 的用武之地,而在网络服务方面,C# 的即时编译和本地代码Cache方案比JAVA虚拟机具有绝对的性能优势。何况C# 一旦成为一个像C++ 一样的公共的标准,软件开发商既可以省去JAVA的许可证费用,也不必担心成为微软的奴隶,那些反微软的人士和主张厂商独立的人士可能也不会有什么意见。这可能正是微软所期待的。

16a27996c309e2d1cfe224df456ac888.gif

     如果把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++代码。

16a27996c309e2d1cfe224df456ac888.gif

     但是,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++发展而来的。其他的开发工具当然还会在相当长的时间里继续他们的旅程,不过在市场份额上,将不可避免地受到冲击。

16a27996c309e2d1cfe224df456ac888.gif

c7c695cef53989b109cb310738167cbc.png

ed44dfa872ef6cc6f0b0b76108645e27.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值