新闻资讯
看你所看,想你所想

c#程式设计

c#程式设计

c#程式设计

《c#程式设计》是2010年清华大学出版社出版的图书,作者是孙践知。该书可作为高等院校计算机相关专业学生的教材,也可作为初、中级读者和培训班学员学习的参考用书。

基本介绍

  • 书名:c#程式设计
  • 作者:孙践知
  • 出版社:清华大学出版社
  • 出版时间:2010年11月1日

2010年清华大学出版社出版的图书

内容简介

《C#程式设计》将C#程式设计必须掌握的知识归纳为若干案例,每个案例解决一个问题。初学者只需模仿案例,获得直接体验,然后再学习和案例直接相关的知识。通过一个单元接着一个单元的模仿、学习,逐步地构成完整的知识体系。
全书共分为12章,主要包括C#概述及开发环境,C#语言基础,分支结构,循环结构,面向对象的基本概念,多态、事件和接口,数组和集合,net类库,档案和流,用户界面设计,adonet和资料库,以及异常处理等内容。
《C#程式设计》在选用软体版本时进行了折中,目前最新版本是Visual studionet 2010 beta版,考虑到beta版软体可能存在问题,《C#程式设计》採用了visual studionet 2008作为开发环境。
《C#程式设计》适合作为高等院校C#程式设计课程教材,书中涉及了大量的最新C#程式设计技术,也可作为程式开发人员的参考书。
C#是微软公司推出的新一代程式语言。它在c++的基础之上重新打造,成为一门全新的完全面向对象的程式设计语言,能够提供更高的可靠性和安全性,不仅能用于开发传统的控制台应用程式和windows应用程式,还可用于开发web应用程式、silverlight动画和xna游戏。
全书共14章,分为两部分,第1部分为c#基础,共8章,重点介绍了c#的基本语法、面向对象的程式设计方法、基于事件驱动的程式设计方法以及程式的调试和异常处理方法。第2部分共6章,在c#基础之上,比较全面地展示了c#的各种套用技术,包括windows程式设计技术、资料库编程技术、档案操作与编程技术、xml与linq高级数据访问技术、网路套用编程技术和多媒体编程技术等。本书内容丰富,可操作性强,叙述简洁流畅,没有晦涩的术语,所有实例精心设计,能够帮助读者轻鬆、愉快地掌握c#的基本语法、编程方法和套用技巧。

书籍目录

第1章 C#概述及开发环境
第2章C#语言基础
第3章分支结构
第4章循环结构
第5章面向对象的基本概念
第6章多态、事件和接口
第7章 数组和集合
第8章 net类库
第9章 档案和流
第10章 用户界面设计
第11章 adonet和资料库
第12章 异常处理
参考文献

微软开发语言

发展历程

1998年,Anders Hejlsberg(Delphi和Turbo Pascal语言的设计者)以及他的微软开发团队开始开发C# 的第一个版本。2000年9月,ECMA(国际信息和通信系统司标準化组织)成立了一个任务组,着力为C# 程式语言定义一个Microsoft建议标準。其设计目标是设计“一种简单、现代、通用、面向对象的程式语言”,于是出台了ECMA-334标準,这是一种令人满意的简洁的语言,它有类似于Java的语法,又借鉴了C++和C的风格。

语言特点

中间代码
微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码.它也明白许多--如果不是大多数的话--程式设计师认为Java程式要不可避免的比C编写的任何东西都要慢.而这种实现方式决定了基于MSIL的程式(指的是用C#,Visual Basic,"Managed C++"--C++的一个符合CLS的版本--等语言编写的程式)将在性能上超过"解释性的"Java代码.当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布.但是Java JIT编译器的普遍存在使得Java和C#在性能上相对相同.像"C#是编译语言而Java是解释性的,"之类的声明只是商业技巧.Java的中间代码和MSIL都是中间的彙编形式的语言,它们在运行时或其它的时候被编译成机器代码.
命名空间中的申明
当你创建一个程式的时候,你在一个命名空间里创建了一个或多个类.同在这个命名空间里(在类的外面)你还有可能声明接口,枚举类型和结构体.必须使用using关键字来引用其他命名空间的内容.
基本的数据类型
C#拥有比C,C++或者Java更广泛的数据类型.这些类型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.像Java一样,所有这些类型都有一个固定的大小.又像C和C++一样,每个数据类型都有有符号和无符号两种类型.与Java相同的是,一个字元变数包含的是一个16位的Unicode字元.C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字.
两个基本类
一个名叫object的类是所有其他类的基类.而一个名叫string的类也像object一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程式中写入一句带引号的字元串,编译器会创建一个string对象来保存它.
参数传递
方法可以被声明接受可变数目的参数.预设的参数传递方法是对基本数据类型进行值传递.ref关键字可以用来强迫一个变数通过引用传递,这使得一个变数可以接受一个返回值.out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值.
与COM的集成
C#对Windows程式最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和伺服器端.C#编写的类可以子类化一个以存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件.这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网路服务,可以用任何.NET语言子类化.
索引下标
一个索引与属性除了不使用属性名来引用类成员而是用一个方括弧中的数字来匿名引用(就像用数组下标一样)以外是相似的.
public class ListBox: Control
{
private string[] items;
public string this[int index]
{
get
{
return items[index];
}
set
{
items[index] = value;
Repaint();
}
}
}
可以用一个循环器来匿名引用字元串内部数组成员,就像下面这样:
ListBox listBox = ...;
listBox[0] = "hello";
Console.WriteLine(listBox[0]);
代理和反馈
一个代理对象包括了访问一个特定对象的特定方法所需的信息.只要把它当成一个聪明的方法指针就行了.代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用.一个反馈方法是代理的特例.event关键字用在将在事件发生的时候被当成代理调用的方法声明.

主要区别

与JAVA的区别
C#(读做 "C sharp")是微软公司在去年六月发布的一种新的程式语言,并定于在微软职业开发者论坛(PDC)上登台亮相.C#是微软公司研究员Anders Hejlsberg的最新成果.C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网路框架的主角.
微软c#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点.C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说原始码版本定义).但它还太不成熟,不可能挤垮Java.C#还需要进化成一种开发者能够接受和採用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.目前大家的反应是:"这是对Java的反击."
C#更像Java一些,虽然微软在这个问题上保持沉默.这也是意料中的事情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C++获得了提高。
与C++区别
C++,这个词在中国大陆的程式设计师圈子中通常被读做“C加加”,而西方的程式设计师通常读做“C plus plus”,它是一种使用非常广泛的计算机程式语言。C++是一种静态数据类型检查的,支持多重编程範式的通用程式设计语言。它支持过程式程式设计、数据抽象、面向对象程式设计、泛型程式设计等多种程式设计风格。
贝尔实验室的本贾尼·史特劳斯特卢普(w:en:Bjarne Stroustrup)博士在20世纪80年代发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函式(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、名字空间(name space)逐渐被加入标準。1998年国际标準组织(ISO)颁布了C++程式设计语言的国际标準ISO/IEC 14882-1998。遗憾的是,由于C++语言过于複杂,以及他经历了长年的演变,直到现在(2004年)只有少数几个编译器完全符合这个标準。
另外,就目前学习C++而言,可以认为他是一门独立的语言;他并不依赖C语言,我们可以完全不学C语言,而直接学习C++。根据《C++编程思想》(Thinking in C++)一书所评述的,C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++ 完全可以取代C语言。
C++语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭藉着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标準模板库(STL)和后来的Boost等程式库的出现,泛型程式设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬体价格的大规模下降,C++受到了一定的冲击;第三阶段从2000年至今,由于以Loki、MPL等程式库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程式设计语言中最複杂的一员。

C#的前途

这世界上没有什幺比编程工具更加牵动程式设计师的心。VC、VB、DELPHI、JAVA……这些耀眼的名字不仅占据了程式设计师的生活,而且似乎已经成为了某种信仰。可是,伴随着新世纪的脚步,这些信仰又一次遭遇了重大的挑战。微软,这头被法官和黑客们折腾得既疲惫又恼怒的狮子,发誓要保住它头上的王冠,拼尽全力,拿出了看家的本事——.NET战略。作为 .NET的核心开发语言,C# 顺理成章地浮出了水面。程式设计师们也就不得不做出一个痛苦的选择,跟在谁的后面?要找出答案就不得不作一番比较和预测。笔者作为一个资深的程式设计师,斗胆在此狂言,权作抛砖引玉。
如果抛开一切非技术方面的因素,C# 无疑是这个星球上有史以来最好的程式语言,它几乎集中了所有关于软体开发和软体工程研究的最新成果。面向对象、类型安全、组件技术、自动记忆体管理、跨平台异常处理、版本控制、代码安全管理……你不可能在另外的一种语言中找到所有这些特性。儘管像很多人注意到的一样,当我罗列上述特性时,总是让人想到JAVA,然而C# 确实走得更远。但现实的情况是,非技术的因素往往更能决定一个产品的未来,尤其在计算机软体的历史上,技术卓越的产品,如OS/2、Mac OS、UNIX等,都败在了Windows那漂亮的脸蛋儿下。而这一次,微软的角色好像从一个赤手空拳的革命者变成了仗势欺人的老地主,如果真是要变天,那C# 这孩子岂不是投错了胎?可能情形并非如此糟糕,毕竟瘦死的骆驼比马大,而且C# 已经提交给了一个标準化组织,一旦成了国际标準,说不準真有哪个手痒的大侠(也有可能是微软自己)给移植到Linux 和别的平台上。那样的话,JAVA可就惨了。因为JAVA的用户主要是网路服务的开发者和嵌入式设备软体的开发者,嵌入式设备软体不是C# 的用武之地,而在网路服务方面,C# 的即时编译和本地代码Cache方案比JAVA虚拟机具有绝对的性能优势。何况C# 一旦成为一个像C++ 一样的公共的标準,软体开发商既可以省去JAVA的许可证费用,也不必担心成为微软的奴隶,那些反微软的人士和主张厂商独立的人士可能也不会有什幺意见。这可能正是微软所期待的。
如果把C# 和 JAVA 在网路服务领域的争夺比作未来制空权的争夺的话,那幺C# 和传统通用快速开发工具——VB、DELPHI等的较量将是地地道道的白刃战。可能最惨的程式设计师就是VB程式设计师,在微软,VB就像离任的柯林顿,不但失去了所有的光辉,而且乱事缠身。想想吧,VB6写的项目必须用转换工具转换成基于.NET的代码才能在VB7中调入,几乎面目全非。由于VB7遵循为迎合.NET而建立的通用语言规範(CLS),几乎把所有原来只在C++、JAVA等语言中可以运用的特性统统加了进来,只是语法和原来兼容。如果你是第一次在VB7中看到自己的旧VB6项目转换之后的代码,一定要当心你的心脏!所以,努力吧,别告诉我你将就此退休。DELPHI的状况也好不到哪里去,原来的看家本领是做起套用来又快又好,可现在看看最新的Beta 1, 你会感到如此熟悉,众多的属性列表、组件……谁让你穷呢,连总设计师都养不住。
其实在程式语言中真正的霸主多年来一直是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++发展而来的。其他的开发工具当然还会在相当长的时间里继续他们的旅程,不过在市场份额上,将不可避免地受到冲击。

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com