不可一慨而论
C#有C#的优势,未来发展的趋势
而C++可用于底层的开发,硬件驱动等等!!!

解决方案 »

  1.   

    不可能。C#借鉴了C++,JAVA的成功之处,适合各种类型的开发
    但如果要底层操作功能的话,最好的还是C++(UNSAFE,UNMANAGED)
    CLR其实也是VM
    就现阶段而言,C++.NET也是唯一能写LOCALCODE的语言。
      

  2.   

    C#与C++相比有点像Java与C++相比,
    C++编译出来的真正的可执行代码,而C#仅仅是一个中间态的代码,需要CLI的运行时才能执行,因此执行效率上是无法和C++的代码相比的。
    但是,C#有自动的内存管理机制,在写应用服务时对系统的稳定性有很大的优势,C++则适合于写对性能要求较高的应用,如驱动程序等。
    在语言上,C#比Java更接近C++,包括运算符重载等。
    而C++得多继承、模板、指针等高级功能,因为太复杂,不宜使用而在C#中没有出现。总的来说,C#与C++有不同的发展方向,C#不太可能完全取代C++.
      

  3.   

    不能取代
    C#的对手是Java,不是C++
      

  4.   

    Java is not platform independent, it's the platform.
    Neither is C#, so is it.C++ is my first lover, and i'll lover it forever.
      

  5.   

    按微软的说法是C#保留了C++好的地方剔除了C++不好的地方。
    我觉得至少在目前来说C#还不能取代C++,特别是在一些底层和多媒体的开发方面用C#实现还比较困难。
      

  6.   

    c#一个发展方向,是微软为了和java竞争。所谓java和c#一次编译,任何平台都可运行都是扯淡,他需要很多支持,如果微软或者unxi系统商不支持,或者有点小分歧,比如现在,就没法运行。
      

  7.   

    c#不可能完全替代VC,别忘了,现在有多少个VC的程序员和多少行VC源代码,至少也是个轻量级的天文数(夸张)。各有所长,各有千秋。应用领域不同,操作硬件的层次不同。等等等等。
      

  8.   

    各个语言有各自的优势!
    C#适合快速的企业级开发, 而C/C++适合在关键性
    事务上发挥长处当然最好的是C#良好的协作能力, 才能借助C#不具备的
    功能, 而又可以使用这样的功能!关于跨平台的问题, 倒不是什么大问题啊, 现在异构的平台
    一起共存才是事实啊
    良好的交互功能, 是C#的又一长处C#前途光明, 我坚信
      

  9.   

    要等C#取代C++没有个10年8年的是不行的,至少目前是不行的,何况还有Unix/Linux那
      

  10.   

    这两者应用范围就不同。企业应用看重的是快速开发与部署;低成本;系统集成等等方面的特性。这些用C++无法实现(不要较真,我说的是在快速的基础上。想想看,光是web接口就够写一阵子了,没等写完,公司都倒了 :P)。所以说,只要有人说到C#比C++的“优势”“劣势”,就是没搞清楚C#是干嘛的。实际情况是C#更象是java的翻版,而和c++关系不大。大多的东西是一样的。仔细想想,不一样的东西基本都在语言之外。象是模版和运算符重载,都是很容易实现的(jdk1.4 addon 了template的支持)。“C#保留了C++好的地方剔除了C++不好的地方”这句话好像是九几年sun的哪位大叔讲的,原来说是java is c++--。.net是针对java的。目前国外的市场是j2ee为主,利润很高,所以ms才来。这是一个成熟的公司决策罢了,不是“革命”。java是跨平台的。我们就是windows开发,linux/unix部署,没觉得扯淡啊。C#想实现也很容易,这是虚拟机特性,也和语言无关。在企业应用中,跨平台是有意义的,尤其是新软件系统在旧框架上。
      

  11.   

    不可一慨而论C#有C#的优势(在net平台),C++用于底层的开发,硬件驱动
      

  12.   

    很多东西是思想,不是技术,其实c#也可以作很好的跨平台,java一样可以实现快速本地的虚拟机器。 也许有些人不相信,但其实 sun和微软的技术差距没有我们想像得那么大, 但关键是他们的发展思路方向不同
      

  13.   

    呵呵,没错,.net很容易跨平台,这就是我说过的“语言之外”的东西,是虚拟机本身的特点。只有到了一定的水平,技术能力才能成为创造能力。相信很多的国外公司已经达到了这个水平。
      

  14.   

    c#不会完全取代c++就好像c++不会完全取代c一样
    任何一门语言都有它自身的特点,
      

  15.   

    VC是微软的王牌,他不会那么傻,如果C#代替了C++,VC.net就没有必要出来了。 象楼上说的,C#、C++、C及其他语言,应用领域不一样。
      

  16.   

    会的啦,上面说的都不对,c#是对c++ 的改进,就象,c++对c的改进一样,
    你说,它不取代c++取代谁呢,每种语言都是在发展的,c语言家族也是一样!!
    当然现在c#还没有成气候,以后微软的windows,会不再公布api,
    而只已.net类库的形式提供.(api能操纵底层,.net类库也一样能)那时估计就是c#开始取代vc++的时候了.我估计可能要3-5年.
      

  17.   

    to ouyang76cn(流氓太医) :按你这么说,有了高层封装,就不要底层实现了。.net不可能用.net实现自己,这是一定的。如果windows=计算机,大家心安理得的等ms封装一切,那就实现了你的理想了。.net能操作底层,还要unmanaged code干嘛?没了unmanaged code,又怎么操作底层?如果你对java和.net都了解,就知道c#是怎么回事了。能关c++多少事儿。另外,c++和vc++是不是一个概念搞清楚先。
      

  18.   

    两种语言将在不同的应用领域,可以没有C#但不能没有C++,语言链大致是这样的(可能不太准确):微指令-》汇编-》C-》C++-》C#,如果中间一环断链,那么后继者将不会存在。
      

  19.   

    这是一个语言抽象程度的顺序,基本上是这样,不过c、c++、c#并不是递进的,他们本身的概念不同。虽然都是oop,c++和c#/java相差很大,还要对c兼容。
      

  20.   

    to:
     miles_z(www.2yup.com/asp/)C#并不是java,它有unmanaged code,
    .net类库一样可以使用unmanaged code来操作底层。这本身就是它提供的
    功能,怎么能分开来讲呢。另外因为c++的指针虽然效率高,但很烦琐,易出错,c#就使用,
    引用型变量,和指代来取替指针,这本身就是对c++编程语言的
    改进和提高。你说它不取替c++干嘛要修改语法。另外,我并不是等ms封装一切,我更喜欢一行行的手写代码。
    c#的代码也并不是象vb6,那样简单。
      

  21.   

    的确,我也提到了.net的unmanaged code。他其实是.net的向下兼容和扩展。并不是.net的核心。想得到.net或是说c#的优点,是不推荐unmanaged code的。毕竟,除非为了兼容,用它不如用其它的工具。“对象参数传引用”、“基本类型参数传值”、“对象在heap上创建”、“基本类型在stack上创建”、“系统gc”等等这些概念都不是c#提出的。这些方面可以说是从java原封不动的继承来的。当然,这些概念也不是java的原创,也是java从c++的角度出发,做的取舍。毕竟技术就是在相互借鉴中发展的。可是,如果把这个看做是取代的标志,java早就取代了c++。这样说,岂不是笑掉c++ funs的大牙?何况,“引用”是在没有指针的情况下提出的概念。这不能说是改进和提高,只能说是特定问题的特定方案。如果能解决深层复制问题,byVal和byRef关键字有的话当然更方便(java好像是保留没实现)。ms的封装一定会越做越好的,这毫无疑问。.net beta的类库规模已经超过java了。所以,可以看出ms的雄心。手写不手写和封装不封装是两个概念。再拿java做例子。为什么比c++简单?因为操作封装了。永远不用考虑thread是怎么同步的,只要会用就行了。难道写java不是一行一行手写么?java就已经比vb复杂多了。当然,.net的方向只有ms知道(也许也不完全知道,呵呵),它的发展不是我们说了算的。不过,仅从目前看,在windows平台不太可能取代c++。其他平台的就没有讨论价值了。
      

  22.   

    是呀,unmanaged code,是c#的向下兼容,为什么别的语言没有呢,这就是
    方便c++程序向c#移植,其实c#中完全可以不用指针.指针的功能完全可以用delegate等类型来代替,java并没有完全的取代c++,这是因为java开发的系统并没有实现100%的
    跨平台,运行速度也太慢,也没将技术规格呈送给ECMA,但就是这样,
    它也抢走了很多本是c++的应用领域.我个人觉得c++的复杂性(以vc为例),已经严重影响到了,它在商业软件中的应用,虽然程序员都以程序的复杂性为荣,但vc的复杂,并不在程序的具体实现
    上,总在一些细枝末节上,已到了要改的地步了.现在c#还不能写驱动程序,不过并不表示以后不能
      

  23.   

    不会是不会,不过找到一个新消息:但是看起来Visual C#有取代Visual C++的苗头.好像微软停止了开发的MFC和CTL 类库的工作. 既然在.Net的环境里,用 visutal studio .Net可以使用任何的语言(微软的),看起来C# 比 C++ 更适合一些.
    ----------------------------------------
    To teach a fish how to swim.
      

  24.   

    1。delegate并不能完全取代指针。他只能算是安全指针。2。跨平台不是取代c++的必要条件,而且,一旦跨平台,就意味着虚拟机(IA64和spac运算指令都不一样)。也就意味着和c++应用领域的不同。c#,java都是这样。3。提到版权和标准化,就很复杂了。如果java不是由sun控制,早就被vj终结了——vj可以编译本地代码,有ms提供的类库,可以实现windows的api访问,而且ms有世界最快的java jvm和jit。。所以,先搞清楚,再说(我就不清楚,呵呵)。4。复杂性是相对的。想简单一定有代价,比如性能,比如控制能力。在底层技术(vm,硬件等等)足够发达以前,复杂是有必要的。java出来也是在高端应用,杀不掉c++。5。要说驱动,用c#就目前来看,有点离谱。大多的驱动都是用c和汇编(至少我用汇编那两年是这样),c++都很少。其实也根本没有用c++的需要。驱动最注重控制,所以也就最复杂,最没有逻辑。c#也许能做(毕竟unmanaged code可以不用vm),不过近几年来看,还不现实。unmanaged code的存在,是ms的取向,能不能成功还很难说。有了他,也没有兼容现有代码的可能。我认为他还是一个向前,而不是向后的举措。他是有掌控一切想法。
      

  25.   

    to cnuninet():
     写驱动程序不难,但是调试驱动程序很麻烦。to ouyang76cn(c#痴+c#迷)
     指针和delegate虽然概念相近,但是在实现差别很大,指针的效率远远高于delegate。
     如果一个程序玩完全全使用unmanaged code,那和C语言也没啥区别。
     如果想写设备驱动,就不要想GC了,也不要象.NET Framework了,那东西为了对象化,分的层次太多了,效率实在太低了。 我想.NET要开发目前的驱动程序,5-6年之内不太可能,即使可能,随手学一把也无妨--不过目前阶段要赚这部分的钱还是老老实实用C去做吧!