公司要建设网站,杭州滨江区抖音seo行情,网站一直不被百度收录,手机自适应的网站怎么做引言
语言是程序开发者行走江湖的手上利器#xff0c;各大门派的高手在论坛、博客为了自家门派争吵不已早是技术世界中的亮丽风景#xff0c;虽多少为刚刚踏入江湖的新手提供了思考的素材#xff0c;但也同时迷惑了初出茅庐的前行方向。
本文不欲计较门派的高下#xff0…引言
语言是程序开发者行走江湖的手上利器各大门派的高手在论坛、博客为了自家门派争吵不已早是技术世界中的亮丽风景虽多少为刚刚踏入江湖的新手提供了思考的素材但也同时迷惑了初出茅庐的前行方向。
本文不欲计较门派的高下旨在明辨技术的真谛这就是.NET平台下的开发利器C#语言并从其变迁的进程中对于.NET技术发展把玩一番。
在上篇我们走在历史对.NET的过去尤其是c#语言做以回顾具体而言就是.NET 1.0、2.0、3.0的一路走来。
.NET之历史脚步
C#十年了。这个日期是从Anders Hejlsberg在1998年组建C#团队开始算起的掐指算来已是十年有余了。作为.NET平台下的静态强类型语言在过去10年的发展历程中披荆斩棘已经逐渐成为应用开发语言中的佼佼者。从TIOBE开发语言排行榜的最新统计来看C#位居第六成为开发语言市场的顶级产品
表 1 TIOBE开发语言排行榜 注此为2008年12月的TIOBE开发语言排行榜参考http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
因此在我们讲解历史的开始将C#发展历史中的里程碑作以标记来感受一下C# 10年的发展历程为每开发者在心底搭起一座通往未来的桥梁。 下面我们分别从不同的历史阶段来了解C#语言的变迁并讨论在每个变迁的里程碑上值得品味的闪光点并由此为未来的发展打一个基础。
1.0从诞生到立足
2000年之夏微软大当家——盖茨先生着手战略调整微软大刀阔斧的进行了技术改革与创新并由此为世界带来一个新的名词这就是.NET。那么什么是.NET呢在.NET这一概念诞生之初这一概念连微软本身都充满了定位的错乱和迷茫以至于一时之间处处皆为.NET大有一统江湖之势。随着.NET平台的逐渐完善概念和定位上的混乱已经日渐清晰作为这场变革中的一项重要内容一种全新的、能够适应.NET平台特性的高级语言C#也随之诞生。这一任务理所当然的落在了Anders Hejlsberg的身上作为Delphi之父大师级的Anders从1998年11月开始领导了他的小组为这个世界带来全新的语言宠儿这就是C#。
初出茅庐的C#就像羞羞答答的小姑娘步步留心、时时在意学着他人的模样生怕在前辈面前丢脸。当她以全新的姿态出现在万千程序开发者眼前时其兼取百家之长、优雅简洁之态、摒弃复杂之弊的特性立时令所有的观望折服。在迎来所有目光的关注的同时迅速成为高级语言战场的骄子。
那么C#诞生之初兼取百家之长具体都有哪些优秀品质呢总结起来主要体现在两个方面包括
面向对象编程。C#实现对属性、事件、委托、方法、索引器、构造器的全面支持为面向对象的封装、继承、多态和接口提供了语言级别的支持。以继承为例c#支持单实现继承和多接口继承摒弃了C中多继承带来的复杂性。跨平台运行时支持。CLR是.NET平台下应用程序的通用语言运行时是C#程序赖以生存的跨平台环境因此C#具有了.NET平台语言的所有优势通用类型系统、自动内存管理、统一异常处理、完全的FCL访问权都成为C#无与伦比的优势所在。
2.0变革之作
C# 2.0是一次完善和补充也是一次变革与重生。在2.0中引入了诸多的语言特性完善了1.0基础上的某些不足例如匿名方法将代码放在委托而无需创建新的方法可空类型实现了对值类型的null操作而部分类将一个类分解到多个类文件中。这些补充和完善 总结起来主要包括
匿名方法可空类型部分类迭代器泛型
其中泛型支持是C# 2.0的重中之重.NET框架从CLR级别实现了对泛型的支持提供专门的IL指令支持泛型操作同时配合C#语言机制构造一种全新的编程结构实现了对类型抽象化的通用处理方式这就是算法重用。
以最简单的交换数据为例我们来了解泛型带来的好处
// Release : code01, 2009/05/07
// Author : Anytao, http://www.anytao.com
public static void Swap(ref int x, ref int y)
{int temp x;x y;y temp;
}public static void Swap(ref string str1, ref string str2)
{string temp str1;str1 str2;str2 temp;
}
以上两种算法分别实现了对整型、字符串型数据的交换在泛型引入之前实现相同的交换算法需要分别为所有的类型构建相似的处理逻辑这显然是一种代码上的浪费而泛型特性彻底解决了这一问题
// Release : code02, 2009/05/07
// Author : Anytao, http://www.anytao.com
public static void SwapT(ref T t1, ref T t2)
{T temp t1;t1 t2;t2 temp;
}
对于不同的类型在运行时以实际类型对T占位符进行替换并转换为本地代码彻底实现了灵活的类型抽象和算法重用。同时除了代码级别的重用好处泛型解决了类型转换、装箱与拆箱、类型安全等诸多问题为程序设计带来巨大的变革。
3.0涅槃与重生
C# 3.0是语言发展历史上的里程碑变革就像凤凰涅槃一般为C#语言注入强大编程体验和活力简洁、干净、富有意义这些特性中主要包括
匿名类型自动属性对象初始化器集合初始化器隐式类型变量和隐式类型数组扩展方法查询表达式
除此之外C# 3.0的最大亮点就是LINQLanguage Integrated Query语言集成查询在CLR中集成类似于SQL式的数据查询能力一种前所未有的函数式编程体验在面向对象语言中得以大展拳脚这不得不说是C#带来的超酷体验。
因为本文并非一本讲述编程的教科书所以我们无法在有限的篇幅来展现优雅的代码只能取一瓢饮之并通过简要的对比来领略3.0中的强大功能。以对象初始化器为例在2.0时初始化对象成员我们以这种方式实现
User user new User();
user.Name 小王;
user.Age 28;
在3.0中实现对象初始化有了更好的解决方案由对象初始化器来完成
User user new User { Name 小王, Age 28 };
同样的方式可以用来实现集合的初始化和隐式类型的初始化等。
接着我们再来了解一下自动属性带来的语法魅力在3.0之前进行属性封装的是一件麻烦的事情例如
// Release : code03, 2009/05/07
// Author : Anytao, http://www.anytao.com
class User
{private string name;public string Name{get { return name; }}private int age;public int Age{get { return age; }set { age value; }}
}
而自动属性将这一切化简为无形语法简单而功能依旧
// Release : code04, 2009/05/07
// Author : Anytao, http://www.anytao.com
public class User
{public string Name { get; set; }public int Age { get; set; }
}
这些所有的新特性最终都为了一个共同的目标而铺垫这就是C# 3.0中最重量级的新特性LINQ。所以本文也不能少了对LINQ的讨论在代码级别实现类似于SQL式的查询语法以类型安全的通用方式完成增、删、改、查等数据操作的基本方式。只要数据源基于IEnumerableT接口而实现那么不管是关系型数据、内存中集合还是XML都可以作为LINQ查询对象进行数据处理这为面向对象语言实现函数式的编程体验创造了条件一种全新的编程风格为编程体验刮来一股旋风
// Release : code05, 2009/05/07
// Author : Anytao, http://www.anytao.com
public static void Main()
{ListUser users new ListUser{new User{Name 小王, Age 27},new User{Name 小张, Age 29},new User{Name 小李, Age 23}};IEnumerableUser result from user in userswhere user.Age 30orderby user.Age descendingselect user;foreach (var user in result){//执行操作}
}
你看这种体验果然非同凡响优雅而简单没有辜负Anders对于代码美学的追求。而作为编程用户我们同样体味了这种理念在功能和结构上的双重精彩。 参考文献
Webhttp://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Webhttp://weblogs.asp.net/podwysocki/archive/2008/05/24/what-is-the-future-of-c-anyways.aspx
WebNew features in C# 4.0
Webhttp://msdn.microsoft.com/en-us/magazine/cc163340.aspx
作者简介
王涛网名Anytao微软C# MVP高级软件工程师机械工程硕士《你必须知道的.NET》一书作者主要研究方向为.NET底层架构和企业级系统应用。现就职于某软件公司负责架构设计、软件开发和项目管理方面的工作。作者对.NET基础架构和CLR底层运行机制有浓厚的研究兴趣和造诣熟悉ASP.NET、XML、WCF、SQL Server相关技术对面向对象、设计模式和软件架构有一定的研究与实践经验。他的联系方式如下http://www.cnblogs.com/Anytao