C#和C++哪个强大?为什么?

作者&投稿:帅哀 (若有异议请与网页底部的电邮联系)
c#和c++哪个强大?~

不同的语言也不好直接做比较吧。C#功能强大,无论是做桌面应用,还是写ASP网页交互都很好用,但毕竟属于托管类的语言,运算速度远不如C++。C++在科学计算、游戏开发上还是很给力的。现在基于C++的MFC虽然有些过时了,但是还是非常实用的。不过C#上手容易学起来快。

C++的设计目标是低级的、与平台无关的面向对象编程语言,C#则是一种高级的面向组件的编程语言。向可管理环境的转变意味着你编程方式思考的重大转变,C#不再处理细微的控制,而是让架构帮助你处理这些重要的问题。例如,在C++中,我们就可以使用new在栈中、堆中、甚至是内存中的某一特定位置创建一个对象。

在.NET的可管理环境中,我们再不用进行那样细微的控制了。在选择了要创建的类型后,它的位置就是固定的了。简单类型(ints、double和long)的对象总是被创建在栈中(除非它们是被包含在其他的对象中),类总是被创建在堆中。我们无法控制对象是创建在堆中哪个位置的,也没有办法得到这个地址,不能将对象放置在内存中的某一特定位置。(当然也有突破这些限制的方法,但那是很另类的方法。)我们再也不能控制对象的生存周期,C#没有destructor。碎片收集程序会将对象所占用的内存进行回收,但这是非显性地进行的。

正是C#的这种结构反映了其基础架构,其中没有多重继承和模板,因为在一个可管理的碎片收集环境中,多重继承是很难高效地实现的。

C# 中的简单类型仅仅是对通用语言运行库(CLR)中类型的简单映射,例如,C#中的int是对System.Int32的映射。C#中的数据类型不是由语言本身决定的,而是由CLR决定的。事实上,如果仍然想在C#中使用在VisualBasic中创建的对象,就必须使自己的编程习惯更符合CLR的规定。

另一方面,可管理的环境和CLR也给我们带来了好处。除了碎片收集和所有.NET语言中统一的数据类型外,它还提供给我们一个功能强大的面向组件的编程语言,无须对后期绑定提供特别的支持,类型发现和后期绑定都是被内置在语言中的。属性是C#语言中的第一类的成员,事件和代理也是。

可管理环境最主要的优点是.NETFramework。尽管在所有的.NET语文中都可以使用这种框架,但C#可以更好地使用.NET框架中丰富的类、接口和对象。

Traps

C# 看起来与C++非常相似,这使得我们在由C++转向C#时比较轻松,但其中也有一些容易出错的地方。在C++中编写得非常漂亮的代码,在C#中会不能通过编译,甚至会出现意想不到的结果。C#与C++之间在语法上的变化并不大,编译器能够发现这二者之间大部分的差异,我在这里就不再多费笔墨了,在这里我介绍几个容易出问题的比较重要的变化:

引用类型和值类型

在C#中,值类型和引用类型数据是有区别的。简单类型(int、long、double等)和结构属于值类型数据,类和对象属于引用类型数据。除非是包含在引用类型的变量中,与在C++中一样,值类型变量的值存储在栈中。引用类型的变量也存储在栈中,但它的值是一个存储在堆中的对象的地址,这一点也与C++类似。值类型变量是将自己的值传递给方法,而引用类型变量则将自己的指针传递给方法。

结构

C#中的结构与C++中有非常明显的区别。在C++中,结构更象是类,除了缺省的继承外,其缺省的访问权限是public而不是private。在C#中,结构与类截然不同,它是用来封装轻型对象的,是值类型的数据类型,在传递时传送的是变量的值,而不是其地址。此外,它们也有一些不适用于类的限制,例如,它是不能继承的,也没有除System.ValueType之外的基本类。结构还不能定义一个缺省的constructor。

另一方面,由于结构比类的效率要高,因此它非常适合于创建轻型对象。因此,如果它的缺点对你的软件没有影响,使用结构比使用类效率要高得多,尤其是对于小对象而言。

寸有所短,尺有所长。各个语言都有各自的特色和不足,不可以好/坏来评价。应该以自己需求来选择最合适的编程语言。
1、 效率方面:C++注重运行效率,如果对实时性有较高要求,首选C++/C语言。C#写成的代码,都是先被编译成中间语言(IL,Intermediate Language,在运行时,再由即时编译器(JIT,Just-In-Time)编译成本机代码,所以实时性上少欠一筹。
2、依赖性:C++可以生成native(本地代码),不用依赖于.net framework;C#需要相应版本的.net framework支持。
3、可移植性:采用标准C++编写的代码(或使用QT编写的代码)可移植性还是比较强的;采用C#编写的程序目前基本上只能运行于windows系统上,linux平台上有个mono项目用于将C#迁移到linux平台使用,但是目前该项目还有很长的路要走。
4、易用性:C++从C语言过渡而来,对C语言保持了最大的兼容性,熟悉C语言的用户很容易上手,但是也因为这一原因,使C++不是一个纯粹的面向对象的语言。而C#则是一个彻底的面向对象语言。C++中最特色的部分就是指针,但是现在普遍认为应该适度使用指针,因为它太容易出问题了,C++中可以设置全局变量;C#很少使用指针(还存在,在非安全代码中仍使用),没有全局变量。C++中程序员要自行处理对象的析构,容易出错;C#有垃圾回收机制(从java借鉴过来的,其实还有很多东西都像是从java学来的),程序员不用再过分担忧对象的析构了,一切交给系统来处理。初学者C#更容易上手。
5、数据库:大多数数据库软件都为二者提供了相应的访问接口,相对而言C#更容易使用。
6、网页编程:很明显,C#在Web编程上更现代,更灵活,更易用。
7、并行编程:例如nVidia的CUDA并行计算架构只对C++提供了支持,尽管有第三方提供了面向C#的接口,还是使用C++更方便一些。

问这个问题真的不了解计算机。。C/C++是计算机最强大的语言,除了汇编也许没有比这个语言强大的了,它能做OS,DATABASE,OFFICE,ORACLE,UG,CREO,CORELDRAW,AUTOCAD,。。。。几乎电脑上的程序都离不开C/C++
C#就相当于JAVA也许连JAVA都比不过。。。。也许就是一个复杂的玩具语言罢了。。。如果你看到有用C#开发的类OS,DATABASE,OFFICE,ORACLE,UG,CREO,CORELDRAW,AUTOCAD,。。。请告诉我。。我给你发1W的红包


上街区15013006589: c#和c++哪个强大? -
端木巩枇杷: 不同的语言也不好直接做比较吧.C#功能强大,无论是做桌面应用,还是写ASP网页交互都很好用,但毕竟属于托管类的语言,运算速度远不如C++.C++在科学计算、游戏开发上还是很给力的.现在基于C++的MFC虽然有些过时了,但是还是非常实用的.不过C#上手容易学起来快.

上街区15013006589: c#和c++哪个更实用? -
端木巩枇杷: 两种语言的主要用途不一样,简单说就是C#开放主要应用于商业软件及数据库开发,而C++的优势在于面向对象可以加载各种类库,尤其是在游戏开放上结合DirectX非常强大.而且C#已经有没落之势,如果说实用的话还是C++好一些,但是都没有C语言和JAVA实用!

上街区15013006589: c++和c#哪个好?
端木巩枇杷: 看你用来做什么了,这个不好说,现在C#比较火,但是就不能说C++没他好.问题具体点才好回答嘛.呵呵. 简单地说,c++更底层,更基础,c#是基于.net的抽象层次更高,更容易理解.

上街区15013006589: C、C++、C#哪个强大?学哪个好? -
端木巩枇杷: 各有千秋,学C#就业岗位比较多,容易就业,入门相对其他两门语言容易,毕竟现在流行Web开发,C和C++一直都是很流行的编程语言,不过对程序员的要求比较高,入门比较难,一般就业都需要一定的经验.

上街区15013006589: C++和C#哪个好,那个前景好些? -
端木巩枇杷: 第一从难易成度来说:C# 从学习上来说容易一些,C++ 难一点;C# 可以做入门级,C++可以做深入级;第二从发展前景来看:它们各有春秋,C# 可以做桌面运用软件也可以做Web网站,C++ 做大型软件可能优于C#, 待遇也可能高于C#;第三从找工作快慢来来看:初级C# 容易找到工作些,C++难一点;

上街区15013006589: C#和C++哪个好一点
端木巩枇杷: C++是一个经典的老牌计算机编程语言,在上个世纪90年代其用户相对比较活跃.C#是本世纪初微软推出的一种具有时代性的计算机编程语言, #是四个++++外界解释是比C++更牛X两个等级,你懂的.

上街区15013006589: C#和C++哪种好 -
端木巩枇杷: 你对这个有兴趣很好,如果以后有心在编程方面发展,现在开始关注蛮适合的了.c语言是最基础的,是面向过程设计;然后发展到c++面向对象编程,语法更灵活自然,我个人觉得更简单些.c#是再发展的编程,但是在大型软件的开发中还是用c/c++.个人建议还是从比较基础的语言学起,会懂得更多.

上街区15013006589: C++和C#谁更强?C#离不开微软,就像玩具
端木巩枇杷: 毫无疑问C++更强.不过我不明白你说的“像玩具”是什么意思.C#对我们这种,只是为了实现工作中的一些想法,而非专业搞软件的人还是很有吸引力的,什么都封装好了,比用C++那种,一大堆API,句柄满天飞要好用吧.C#确实离不开微软和.NET,但是现在又有多少人会离开微软?

上街区15013006589: C,C#,C++哪个功能更强大,更实用? -
端木巩枇杷: C++的设计目标是低级的、与平台无关的面向对象编程语言,C#则是一种高级的面向组件的编程语言.向可管理环境的转变意味着你编程方式思考的重大转变,C#不再处理细微的控制,而是让架构帮助你处理这些重要的问题.例如,在C++中...

上街区15013006589: c++和c#哪个做界面更好? -
端木巩枇杷: 1. C++的代码错误容易引起安全问题,造成内存泄漏,运行出错.C#的代码错误容易引起性能问题.如果追求性能,用C++,如果追求安全,用C#. 2. C++的开发难度高,开发周期较长,但是运行效率高;C#的开发难度低,开发效率高,运...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网