文档章节

C与C#的区别

JAVA_NINA
 JAVA_NINA
发布于 2017/06/06 15:38
字数 2416
阅读 112
收藏 0

摘 要:C#是微软公司发布的一种面向对象的、运行于.NET Framework环境之上的高级程序设计语言,是微软公司的最新成果。从时间顺序上说,最早出现的是C,然后是C++,最后是C#。C++是为了解决软件危机而引入面向对象的概念,C#是为了实现平台统一和JAVA争夺市场下的产物。最后是C#。C++是为了解决软件危机而引入面向对象的概念,C#是为了实现平台统一和JAVA争夺市场下的产物。C是完全面向过程的程序设计语言,而C++可认为是半个面向对象,JAVA从C++发展而来,吸取了C++精华,C#更是JAVA的超级版,C#是完全面向对象的。文章对C和C#之间的联系及区别作了简单阐述。   关键词:C、C#、Java;面向对象程序设计;NET环境   Abstract: C-sharp is one kind of high-level programming language which Microsoft Corporation issued, is Microsoft Corporation's newest achievement. From the time sequence, Appears what most early is C, then is C++, finally is C-sharp. C is completely the procedure-oriented the programming language, C-sharp is the JAVA super version, C-sharp is completely object-oriented. This paper has made the simple elaboration to between C and the C-sharp relation and the difference.   Key words: C; C-sharp; JAVA; object-oriented programming; .NET environmen

     C#(读作“C-sharp”)是微软公司发布的一种面向对象的、运行于.NET Framework环境之上的高级程序设计语言。其在PDC上登台亮相,是微软公司研究员Anders Hejlsberg的最新成果。很多人会提出这样的一个问题,那就是C与C#有无区别呢?答案是肯定的,那二者的区别又在哪里呢,说到二者的区别,就必须先谈谈二者之间的联系。   1 C与C#的联系   有一种有趣的说法“C添两个+号,就是C++再添加两个+号,就成了c#了(四个+就成了#)”,还有一种说法“C是爷爷,C++是爸爸,C#是孙子”,从这些形象的比喻中,我们应该能体会到从C到C#的变化过程。   从时间顺序上说,最早出现的是C,然后是C++,最后是C#。C++是为了解决软件危机而引入面向对象的概念,C#是为了实现平台统一和JAVA争夺市场下的产物。从性能上说,C的效率最高,C++次之,C#最低。C是完全面向过程的结构化编程语言,它的特点是语言体积小、效率高、语言灵活,给程序的限制小,而且可以方便地对低层进行操作,所以它非常适合于开发操作系统、驱动程序,嵌入式等对速度要求较高的程序。C++是向下完全兼容C的,C++与C相比最显著的变化就是增加了面向对象的成分,也就是增加了类的概念,因为它的增加使软件开发可以比较容易地描述人类的思维,使得软件的开发和维护变得相对简单,直接降低了软件的成本,但因为C++是面向对象的语言,这本身就制约它的速度,所以C++适合开发那些大型项目,现代的大部分语言都或多或少的借鉴了C++和C的某些特性。C#被包括在.NET平台下,是一个面向对象、面向网络、面向组件的语言, 有很多地方与JAVA非常相似,擅长于开发网络方面的程序。因此,更确切地说,C#是一个需.NET平台支持的开发语言,单纯看C#没有意义,需要了解.NET平台的开发知识。   从编译角度看,C/C++编译生成目标文件都是可被CPU直接理解的机器码,而C#编译后生成的是MSIL(Microsoft Intermediate Language),这种语言不能直接被CPU执行,而是依靠.NET framework翻译(Just-in-time Compiling)成opcode后再送到CPU执行的。因此,这也是上面为什么说C#运行效率最低的缘故。(平均意义上的效率低,不是绝对的)。   C#可认为是C的升级加强版。C是一种优良的面向过程的程序设计语言,而且得到了普遍的推广。但是随着面向对象编程思想的兴起,C已经不能满足要求,因此继而出现了C++、Java、C#等。C#是Microsoft公司设计的一种编程语言。C#和Java都是在语法上借用了C的一些形式而已。跟C/C++没有多少联系了。C#松散地基于C/C++,并且有很多方面和Java类似。Microsoft是这样描述C#的:“C#是从C和C++派生来的一种简单、现代、面向对象和类型安全的编程语言。C#主要是从C/C++编程语言家族移植过来的,因此,C和C++的程序员会马上熟悉它。C#试图结合Visual Basic的快速开发能力和C++的强大灵活的能力。”   2 C与C#的区别   了解了C与C#之间的联系,我们就可以讨论一下二者的区别了。C是一种面向过程的程序设计语言,而C#是一种面向对象的程序设计语言。二者的区别体现在很多方面,接下来就分别对它们各自的特点做个描述,从中大家可体会它们之间的不同之处。 2.1 关于C   C是面向过程编程的语言,主要用来编写操作系统、单片机程序、底层操作软件(与硬件关系较大的),它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。虽然语法相对繁琐,但对硬件的底层编程和对内存的管理的灵活性方面C是其他高级语言所不可及的。   C是结构化编程的典型代表,其用作程序开发时主要是结构化模块,函数的应用和编程。在其原来结构化开发的基础上增加类,就变成了C++,所以可以说C++是带类的C语言。C语言的应用非常广泛,UINX系统中90%的代码是用C语言开发的,其余是汇编等。无论是windows还是Linux及Uinx以及MAC等操作系统,都可用C来开发程序。   C的不足之处就是:C非常的灵活,高级的不易掌握,据说微软培养一名C程序员需要2年的时间。另外,如果单用C语言开发视窗系统,不用C++是很困难的。   2.2 关于C#   C#是从C/C++演化而来的类JAVA的语言,完全面向对象(大家常说的VB、Delphi只是基于对象)。C#是专门针对在.NET Framework上开发应用程序所设计的新程序语言,C#有点类似C++,或者说更像JAVA,因此它有着易用、弹性大的特点,不但提供完整的面向对象支持,在程序语法的执行效率上也比Visual Basic快,所以说C#是为.NET平台量身定做也不为过。   C#程序设计语言学习容易,内部封装了巨量的类库,用户可以直接拿来使用,无论用它开发win程序还是web程序,都十分方便,里有强大的IDE环境vs.net,这是比JAVA好的特点之一。C#代表了编程语言的发展方向,有资料称微软技术专家认定下一代操作系统的80%代码都是用C#来写。   在C#里面基本上放弃了C的指针。语法基本没有区别,个人感觉首先C#不必对指针进行太多的研究,然后是可移植性等,其他的区别相当大,可以说不是一个方向的。   C#与C的语法基本没有区别,但稍有不同,下面就举个例子说明一下——分别在C和C#中声明数组:   int array1[5]; //在C中声明一维数组   int[ ]array1=new int[5]; //在C#中声明一维数组   int array2[3][4]; //在C中声明二维数组   int[,] array2=new int[3,4]; //在C#中声明二维数组   int[ ][ ] array3=new int[3][]; //在C#中声明不规则数组   可见,在C#中声明数组的方式和C中的声明方式是不一样的,在C#中声明数组时,方括号[ ]必须跟在类型后面,而不是标识符后面,若将[ ]放在标识符后是不合法的语法,另一细节是,C#中数组的大小不是其类型的一部分,而在C语言中它却是数组类型的一部分,C#还允许建立不规则数组。   C#缺点是目前只能在.NET平台下,Windows操作系统上运行。另用它编写WinForm时,与JAVA一样,存在着代码易被解密的危险。   以上就是本人对C与C#之间联系与区别的一些认识和看法,有的人也会问学习C#是不是必须有C语言的基础,其实并非如此,C#是一门独立的语言,如果作为初学者,并没有必要先去学习C语言,你只需要从零开始接触C#就可以了。不过,如果你学过C语言,那你学习C#会事半功倍的,因为他们之间有很多语法是一样的。

本文转载自:http://blog.sina.com.cn/s/blog_88adf1650100y4sb.html

JAVA_NINA
粉丝 26
博文 219
码字总数 33012
作品 0
唐山
程序员
私信 提问
objective-c优雅的语法

对初学者来说,objective-c存在了很多令人费解的写法,实际上他们是非常优雅的。 程序员写的最多的就是函数以及调用自己写的或者别人写的函数。本文就从函数的角度来看下objective-c的优雅之...

王二狗子11
2018/01/01
0
0
Apriori算法的C/C#实现

Apriori算法的C/C#实现 最近研究Web数据挖掘常用算法。主要参考书是: web数据挖掘/刘兵http://book.360buy.com/10079869.html 数据结构/严蔚敏 c语言程序设计/谭浩强 对于c#实现参考 http:/...

rhythm
2012/08/21
3.1K
0
@protocol (协议)和 @interface (接口)的区别

Objective-C 中的协议(@protocol),相当于 C#, Java 等语言中的接口 (Interface)。协议本身不实现任何方法,只是声明方法,使用协议的类必须实现协议方法。 Objective-C 中的接口(@interface...

Jack088
2015/09/02
449
0
c#图形界面与java图形界面有什么区别?

c#图形界面与java图形界面有什么区别? 本人学的是java,公司软件都是用c,c++,c#写的,老大分给我任务,主要做图形界面,因为我一直写的都是以j2ee为主的,对这个图形界面是一点都没搞过。不...

_Refactor
2012/12/25
10.3K
90
上云科技 C++ 软件工程师笔试题目

注释:满分100分。 第一部分:C++基础(36分) 【1】#include<file.h>与#include "file.h"的区别?(3分) 【2】.h头文件中#ifndef/#define/#endif的作用?(3分) 【3】写出变量i的值。(3...

风华神使
2016/01/09
242
0

没有更多内容

加载失败,请刷新页面

加载更多

java快递电子面单打印接口对接demo

之前的后天管理系统的电子面单打印使用的是灵通打单。 使用相对比较麻烦,需要到处Excel之后再导入,麻烦。 快递鸟有电子面单api,后台系统直接对接很是方便,不过也遇到了好些问题。 不难是...

程序的小猿
22分钟前
3
0
fasjtjson文档

https://github.com/alibaba/fastjson/wiki/JSONField

jirak
23分钟前
3
0
Mybatis中插入多条记录

Oracle数据库 实现方法 <insert id="saveWithdrawLog"> INSERT ALL INTO OSM_TRADE_DETAIL(SID,MBR_ID,USR_ID,TRADE_MONEY,TRADE_TYPE,TRADE_TIME,TRADE_WAY,PAY_ID) VALUES(#{si......

豫华商
23分钟前
3
0
Flink on YARN(下):常见问题与排查思路

作者:杨弢(搏远) Flink 支持 Standalone 独立部署和 YARN、Kubernetes、Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛。Flink 社区将推出 Flink on YARN 应用解读...

开源中国小二
25分钟前
3
0
技术沙龙|京东云端到端多媒体关键技术揭秘

编者按:从带来更高编码效率、更好的用户体验的京享高清,到直播架构与网络演进优化,从而为用户带来更流畅的观看体验,以及运维系统的异常自动修复和高弹性的多媒体存储架构,一层一层展示出...

京东云技术新知
25分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部