C#和C++哪个强大?为什么?
。。。
论强大,都属于通用型高级编程语言,都很强大。
问题无解。
这里放一个特性对比(C、C#、C++):
C语言诞生得非常之早,C语言的目标就是比汇编方便易用,同时不要损失汇编的表达能力。所以C语言可以看成是“高级的汇编”语言。C语言的源代码基本上可以非常容易地对应到汇编代码,而且可以不需要什么运行时环境的支持。C的特点,简单容易编译,灵活贴近底层。所以一直到现在,一些需要直接和硬件打交道的软件都还是用C语言写的。总之C语言编写简单,更接近底层,直观得管理数据存储。
C#语言抽象层次高且基本只有一种(面向对象的),运行时支持丰富(垃圾回收等),类库丰富。所以它就是好学,易用,同时兼顾运行效率,尽量优化。C#与Java类似,编译后得到的还不是机器代码,而是运行在虚拟机中的元指令。它对安全性做了更多的考虑,没有指针,不能直接操作内存,自动实现内存管理。
最直观的区别就是:C#没有指针类型,内存自动管理;C#有字符串类型,C语言没有,靠字符数组或指针来存字符串;C#中switch后可跟string类型,并且会禁止所有switch..case语句的失败情形,除非case语句后是空格,否则执行了前一个case语句就算没有break也会停止执行后面的case语句;
C#中定义数组时,数组长度可以是变量,而C语言中定义时数组长度只能是一个常量表达式,动态分配内存需要用到molla函数;C语言中没有集合类型;C#有foreach可用于数组和集合的遍历等...
总的来说,C语言更底层,很多东西都需要自己DIY,但极其灵活,功能十分强大,其精华在于指针,直接管理数据存储,面向过程编程,很多操作系统和系统软件都是用C语言写的;C#则更容易上手,很多东西都已经写好,直接使用即可,避免了内存的直接管理,面向对象编程;正如一个冷笑话所讲:“C语言:指针最好用。
C++:最好不用指针。 C#:指针是什么?”
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++更方便一些。
1.C#和C的语法几乎是互通的,只不过C#是完全面向对象的,C是面向过程的。
2.C#的很多内容都可以用C去映射, 比如委托类似于指向函数的指针, 结构体相当于typedef,类相当于type*, 接口则是一个全新的概念了,这体现着一定的编程思想的转换。
3.C#出来得晚性能、更方面都比较全面。
c#是微软在c++基础上开发的新语言,更加面向对象,开发效率更高。
c#更依赖系统,移植性不如c++。
c#运行效率较c++低。
但c#,易使用易开发。
孰优孰劣,自行按需考虑吧。