日期:2014-05-17  浏览次数:21007 次

C#与C++相比优势在哪里?
RT

------解决方案--------------------
你想明白装甲师比特种部队的优势在哪里就明白了...
------解决方案--------------------
探讨
你想明白装甲师比特种部队的优势在哪里就明白了...

------解决方案--------------------
C#来的比C++快,所以成本上面低一些,C++更底层,效率上高些,但是难度大,不如C#快,个人认为以后肯定会是C#和java以及脚本的天下,C++其实一直都没取代C,但是还是很有前途的。。。
------解决方案--------------------
开发的东西速度也不错,开发进度更快。

关键是人员便宜了很多。
------解决方案--------------------
效率高
------解决方案--------------------
两个+号融合了,成了一个。
------解决方案--------------------
问C++好还是汇编好
C++发展而来
------解决方案--------------------
c++对硬件控制好点吧
------解决方案--------------------
C#更高效。。个人觉得。。。
------解决方案--------------------

大家都早点洗洗睡吧
------解决方案--------------------
GC
库比较统一
可多语言
WP7只能用它
------解决方案--------------------
比较语言本身没有意义,c#是基于.net framework框架的,c++可以是mfc/vcl/wfc等框架,也可以直接api编写,区别就在于框架,如果要比较。比较好的问题应该是拿.net framework/mfc/vcl/wfc/sdk等方式的windows程序开发做对比。.net framework才有优势可言,c#语法没啥好说的。
.net framework的优势无外乎是更高级的抽象,c++任何一种框架,都是消息驱动的,.net framework则是事件驱动的。原本的消息,微软在mfc中就体现了自己封装的思路,一堆的OnXXX方法,到了.net自然也是如此,并且发扬光大,mfc中,对话框的初始化放在OnInitDialog方法中,方法默认的加入了一些调用系统函数的代码,.net framework的封装就是让你大多数时候,只能用例如Load,Active,Click的事件,而不是OnLoad...的方法,当然你可以override,但是这样你也只能简单的一行base.OnXXX的方式调用父类的默认实现,而看不到实现细节。

除了封装,.net framework加强了运行时的类型部分,mfc的中为了能实现反射自己是哪个类,类名是什么,弄了那么复杂的一套宏,和支撑的方法,.net下的反射方法对开发人员来说隐藏了细节,功能也比mfc的强大很多。

泛化编程-泛化类型
C++中泛化编程很容易导致代码膨胀,大量使用,你的最终可执行程序可能会暴增。.net framework的泛化类型则是运行时泛型,使用再多也不会代码膨胀,当然,效率和c++的没得比,也不需要比,结果显而易见。

泛化编程-泛化操作
C++了解的不深入,貌似不支持泛化方法,因为动态创建方法需要解释代码的,匿名方法等说白了只是概念,编译后和非匿名方法没什么本质区别,都是生成一个方法签名,调用。不过.net提供了delegate的匿名方法写法,lambda的简化写法。看上去的确有点像。直到2010 .net 4.0的动态方法,才算是真正实现了泛化方法。

内存管理
c++你一个不小心就内存泄漏了,或是释放不对称导致使用野指针,出错误往往很难发现,调试难度大,野指针,访问越界是非常难查的问题。
.net framework开辟了3个线程来动态的维护一个哈希表,检查哪些变量可以释放,让开发人员傻瓜式开发,不用关心内存如何组织的。

字符串类型
字符串本身是一个很高级的东西。c中是没有的,到了c++,大家开始创造了。mfc中有了CString,vcl/stl中都有叫string的类型,但他们都不同,字符串的操作和效率也不同,CString是最有争议的类了。
.net framework下字符串处理,提供了字符串池来维护创建的字符串,string类提供了常用的方法,.net framework内置了正则表达式引擎,c++的主流框架中都是不包含这个的,mfc/vcl/sdk等都需要外挂boost/deelx等正则表达式引擎的实现,不同的实现,对正则的支持也稍有不同。

UI界面
c++大多是开发人员维护界面更新。.net framework则是内部有很复杂的关联,保持联动,这个败笔设计,让开发难度降低到最低,但效率的影响非常巨大。这也是我们经常优化.net界面入手点。微软也很明白自己的问题所在,每次的版本升级,ui库都会提供一些方法来弥补。比如双缓存绘图的支持,虚模式更新listview。

可能有点说跑题了吧。打住了。如有言错,楼下指正。


------解决方案--------------------
语言本身没有优势,用的人多了自然就有优势了 ^__^

这个优势啊,不是说它有多好多好.而是很多公司愿意使用C#来开发产品,这样就会需要很多使用C#的程序员,因此C#的工作就会好找一些.

最好不要纠结于语言本身,任何语言的使用只是一个熟练度的问题.
------解决方案--------------------
别比了,这个话题没必要再提了,你看任何一本计算机书籍,关于语言的结论都是一个:语言没有优劣,只是适应不同的开发环境
------解决方案--------------------
这是个很深的话题,简单地说,C#更简单一些。C++更底层。
------解决方案--------------------
C#不是 (C++)++吗

------解决方案--------------------
没有c++中难用的部分(比如多重继承)
有一个强大的标准类库
面向虚拟机(构建于操作系统之上)

编译器的速度超级快
IDE 支持强大