面向对象和组件的C#编程教材由科学出版社出版李军武汉大学测绘学院“我成长”网站和.NETFramework简介1234计算机语言为什么是C#.NETC#.NET的发展史如何学好编程5.NETFramework简介6集成开发环境IDE7创建C#控制台程序的操作步骤8.NET程序集1.1计算机语言计算机语言可分成:机器语言、汇编语言、高级语言。现在有超过2500种计算机语言。如果仅仅使用汇编,估计程序员的思维永远无法跳出“子过程”这个抽象级别。新的语言出现,老的淘汰掉从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种语言,接近于数学语言或自然语言,又不依赖于硬件,编出的程序能在所有机器上通用。1954年,第一个完全脱离机器硬件的高级语言—FORTRAN问世了。50多年来,共有几百种高级语言出现,而且在不断的变化:新的语言出现,老的淘汰掉。有重要意义的计算机语言有重要意义的有几十种,使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、PL/1、Pascal、C、PROLOG、Ada、C++、VC、VB、Delphi、JAVA、C#、PHP、Python、Ruby等。高级语言可以辅助程序员学习和生产,只有利用高级语言,人们才能有效地把真实事件抽象成计算机能认识的东西。编程语言排行榜TIOBE刚刚公布了2011年3月编程语言排行榜。C#连升两级,第一次排名第四,而且市场占有率也逐渐逼近C++。它也是近年来前十语言中一直保持上升趋势的。美国职位搜索网站Indeed的趋势也印证了这一点,C#目前的职位已经超过C++。长期看C#是唯一一个能与Java抗衡的语言。前20名编程语言排行C#、PHP、Python、Objective-C是新兴语言的代表从语言分类来看,以PHP、JavaScript为代表的动态语言和Lisp函数式语言越来越受到重视,但过程式语言和面向对象语言的地位也不可取代。各种编程语言在互相融合,取长补短:静态的和动态的融合,函数式语言和面向对象语言的融合,向多范型的方向发展,C#就是一个典型。中国的实际情况《程序员》杂志联合CSDN网站和各种IT机构所做的大型网络调查(2004—2006中国程序员大调查),部分结果如下:转向C#.NET绝大多数程序员是从其他平台或编程语言转向C#.NETFramework应用开发。其中:来自C/C++的人数最多,达27.29%;来自VB的占22.49%;来自Java的占16.42;来自Delphi的占15.99%(跟着Anders没错)。请注意,.NETFramework似乎对每个领域的开发者都具有吸引力,这的确是它可怕的地方。1.2为什么是C#.NET2000年6月,微软公司向全球宣布其下一代软件和服务,即Microsoft.NET平台的构想。此外,微软还宣布了基于.NET平台的新产品计划,其中包括新一代的Windows操作系统、VisualStudio开发系统;而.NETFramework是VS新的编程平台。通过公共语言运行时(CLR),支持多种语言(C#、VB.NET、C++等)的开发。在微软把视窗操作系统和软件向网络迁移的新市场战略中,C#语言是最重要的环节。微软推.NET背景考虑一下微软推出.NET时的处境,就会更好的理解它这么做的原因。1)当时,Windows的核心地位不仅正在被互联网所侵蚀,而且受到了Java语言的强力挑战。使用Java编程更轻松,而且具有自己的跨平台运行时,当时已被IBM和甲骨文等IT巨头大力支持。2)而微软的开发工具看上去疲态尽显。VB存在不足,VC++和Windows类库却又对所有人较难。同时,使用COM和ASP的Web开发又显得非常杂乱和不堪一击。.NET十年得失1)如果.NET的目标是赶走Java,那么它至少取得了一定程度上的成功。2)C#在不断的变得更加普及,现在已经是多数Windows应用开发的首选语言。3)ASP.NET则已经成为一个倍受欢迎的Web框架。4)市场对C#人才的需求一直在稳步增长,在英国,C#职位数量所占份额已经达到32%,超过了Java的26%。这是C#.NET的成功之处。5)但.NET的不足之处也很明显:.NET绑死在Windows操作系统下,不是开源的。.NET为中国程序员带来了什么?程序员1:通过.net我找到了工作,还不错!在公司里我们培训了java、Delphi等,所以.net算入门砖吧,不过初学者很容易通过.net理解编程的内涵,入门语言要容易上手的好。程序员2:我打算继续深入学习.net,达到一个新的高度,毕竟这孩子也相当不错,尽管那些有钱的企业,大企业都对它没有兴趣,选择了.net你可能会穷一点,但是它的应用领域是越来越清晰了,小型企业应用它肯定长驱直入,我最看好的是移动开发领域,当然这要看WindowsMobile了,它有多成功,那么.net就有多风光,但是我一直坚信在个人终端领域,微软无人可挡其锐。语言决定思维选择一门语言,就是选择了一种思维模式。软件开发语言几十年的发展,其实也代表了人们对软件认识的变化。相对于Java的老态龙钟,C#一直蓬勃发展,直到最新的4.5版。Java语言的生产力已经严重落后于C#。自诞生起,C#似乎便和Java有些纠缠不清,因为在当时看来,无论是语言层面还是它们所处平台的目标都十分相似。不过经过了将近10年的发展,如今C#的生产力已经大大领先于Java语言,甚至在近几年的变革中已经成为了Java模仿的对象。C#首席设计师Anders谈到:1)在设C#期间,我们考察了很多种语言,如C++、Java、C、Smalltalk等,C#混合了以往开发语言的精华。C#和这些别的语言尤其是Java的关键不同点是它非常接近C++。在我们的设计中努力使然。2)我们希望把C++具备的强大和灵活、VB具备的简单易用同时赋予C#语言。很多语言都有我们感兴趣的相同的核心思想,比如深度面向对象、简化对象等等。3)在C#语言的几个设计目标中,确保编程人员的高效生产率是最重要的一点。我们在设计C#的时候,就从大家熟悉的C++开始并对该语言进行了简化。C#首席设计师Anders谈到:4)超越这些传统的语言论题,我们设计语言的一个关键的目标是使C#面向组件。C#是C/C++家族里第一个面向组件的语言。5)我们努力避免用“象牙塔”的方式设计C#和.Net框架。我们承受不起重写我们所有的软件的负担;你要善于利用你已经拥有的。所以,我认为互操作性也是关键的。6)另一个重要概念是“一站购物式软件”。一旦你用C#写代码,你就在这一个地方写了一切。不再需要头文件、IDL(接口定义语言)文件、GUID和复杂的接口。因为它是自包容的单元。编程语言的发展趋势及未来方向2010,Anders在比利时作了一场演讲,阐述了他眼中的编程语言的发展趋势及未来方向:如今影响力较大的趋势主要有三种(下图),它们分别是1)“声明式的编程风格”,包括“领域特定语言”及“函数式编程”,2)过去的五年非常火热的“动态语言”(其最重要的方面是“元编程”能力),3)以及多核环境下的“并发编程”。1.3C#.NET的发展史由于需求的多变性,以及市场竞争的激烈,程序员的压力往往是很大的。他们都希望有高效的语言工具,以在最短时间内制作出最好的软件。这也是应用程序开发的目标。在.NET出现之前,程序员的生活是痛苦的。1)C程序员:a)C程序员不得不面对手动内存管理、令人讨厌的指针运算。b)作为一种结构化语言,C程序员很容易写出冗长的代码,可读性差,不好维护。c)再加上API定义的数以千计的全局函数,Bug成灾也就不足为怪了!程序员的生活是痛苦的2)C++程序员:a)C++程序员得到了面向对象带来的好处。b)但依然无法摆脱C语言所带来的一些痛苦的方面:手动内存管理、讨厌的指针等等。事实上,C++编程依然是一个艰难并且易犯错误的过程。3)Java程序员:虽然Java是一种优雅的语言,但是有一个潜在的不足:a)使用Java意味着在开发周期内从前台到后台都要使用Java。Java基本上不支持与其他语言的集成,因为这有违Java的初始目标:用单一语言满足所有需要。b)Java的速度也是一个问题。.NET出现后,应用程序员的生活会得到改善。什么是.NET?看看微软的定义:.NET基于Internet标准协议构建,是一个革命化的新平台,它融入了计算和通讯的工具和服务。.NET=新平台+标准协议+统一开发工具.NET是一个完全不同的新的模型。.NET提供的解决方案“改变了所有的东西”。.NET以一种相对激进且蛮横的方式来改善我们的生活。C#是一种基于.NET框架(.NETFramework)的、面向对象的高级编程语言。以框架类库(BCL)作为基础,以VisualStudio.NET为开发平台。.NET核心功能1)对已有代码具有完全的互操作性已有的COM组件可以和更新的.NET组件共存。而且平台调用服务允许在.NET的代码里调用基于C的库(包括操作系统的底层API)。2)完全的语言集成.NET支持跨语言继承、跨语言异常处理和跨语言的调试。一个平台支持多种语言开发,一个程序可由多种语言共同开发。3).NET语言共享的公共运行时引擎CLR这个引擎的一个特点是具有一组明确定义的类型CTS,而每一种支持.NET的语言都能“明白”这些类型。.NET核心功能4)全面的基类库BCL这个库除隐藏了原始API调用的复杂性外,还提供了.NET语言所使用的一致的对象模型。5)简化的部署模型在.NET环境下,不需要将二进制单元注册到系统注册表。另外,.NET允许同一个*.dll的不同版本存在于同一台机器上。6)其它优点整个平台基于XML标准,轻松实现WebService,易于开发分布式应用程序;程序运行速度快,可维护行好;学习周期短。C#,.NET和VS.NET发布情况注:ECMA是指欧洲计算机制作协会,ISO是指国际标准组织C#从2.0起突然发力,瞬间将Java语言甩开2005年底,微软又发布了基于.NETFramework2.0的C#2.0,植入了适用于大型团队开发的各种优秀的复杂功能。C#2.0有了极大的改善,可以帮助程序员编写更清晰易懂、更容易维护的代码。这种改善来自于不断加入的新功能,例如泛型类型、以及其他大量有用的语言结构。而且,这些改变还伴随着为.NETFramework库提供相应的支持。C#3.0的改进更是堪称经典1).NETFramework3.0提供了一套新的内核API,这个版本已经成为WindowsVista操作系统的一部分。2).NETFramework3.5得到增强的功能领域包括基类库、Windowsworkflowfoundation(WF)、WindowsCommunicationFoundation(WCF)、WindowsPresentationFoundation(WPF)和WindowsCardSpace(WC)。3)VS2008主要变化在于强化了对网页应用开发的支持。4)强化了对LINQ开发模式的支持、提供了LINQtoSQL改善数据存取,增加了WPF、WCF、Workflow的设计工具和项目等。5)C#3.0的新特性灵感来自于函数式编程语言,广泛地引入了LanguageIntegratedQuery(LINQ)模式到通用语言运行库中。6)C#3.0的其它一些新特性有:匿名类型,Lambda表达式,分部方法等等。C#4.0的改进1)C#4.0延续了这种不断提高易用性的趋势。2)大大简化了许多常见任务,包括泛型类型、传统的互操作以及处理动态对象模型。3)C#4.0最大的创新点是拥有了动态编程语言的特性。C#有别于Java的特性并非这么普通,它是凝聚了Anders这个天才的理想,都是对生产力提高有重大意义的。1.4如何学好编程--Anders的回答1)各个编程语言几乎在每个方面都不相同。语法是你要学习的很大一部分,但这是以前的事了,现在你要学习巨大的框架,这个框架正越变越大,语法只是