【------------CSHARP和C++的区别?------------------------】

时间:2022-09-01 19:07:58
汗颜地问高手们个弱问题,C++的功能是否完全属于CSHARP功能的子集?
这么问,是因为我既喜欢偏硬件的开发,也想学习CSHARP。所以希望可以只学一种语言,不然我就要学习两种语言了。
谢谢懂行的高手指点!万谢!

17 个解决方案

#1


C++学好了,我认为一切都不是问题了。

#2


该回复于2011-04-23 17:23:35被版主删除

#3


2楼做广告!!

#4


期待细节

#5


该回复于2011-04-25 13:11:44被版主删除

#6


本帖最后由 caozhy 于 2011-04-23 20:26:27 编辑
C++和C#是完全不同的语言。C++不是C#的子集,C#也不是C++的子集。

C#是一种面向.NET虚拟机中间代码(IL)的语言,所以C#不适合开发硬件驱动程序。最初,C#是仿照Java创立的。

随着C#的发展,C#和Java,和C++越来越远。

C#相比C++来说,语法简洁,并且更加符合现代编程语言的特征。

C++的一个主要设计目标是最大程度的兼容C语言编译器。所以,全局变量、宏、预处理关键字等等都保留了下来。

C#完全面向对象,并且不使用指针。C#从语言设计之初,就抛弃了C++繁琐和容易出错的语法,比如:
if (i = 2) ...
在C++里面,可以编译,但是在C#里,无法编译。因为大多数情况下,程序员试图表达的是 if (i == 2)
再比如:
switch (i)
{
    case 1:
        i++;
    case 2:
        i += 2;
}
在C++里面,可以编译,当i=1,则会贯通两个分支,在C#里,会报错。

C++里,指针是一个非常灵活的特性,但是也非常容易出错,在C#里,不使用指针。

C++里,一个对象创建之后,程序员负责回收:
Class1 *p = new Class1();
...
delete(p);

C#里,垃圾回收器会自动回收不用的对象。

C#支持泛型,从语法的角度看,很类似C++的模板,但是 C# 泛型类型替换是在运行时执行的。同样,C# 泛型语法得以简化。

C#支持委托,C#的委托实现了安全的回调机制,在C++里面,使用的是函数指针——函数指针指向哪里,就会运行到哪里,如果指针指向的地址和程序员的预期不一致(比如黑客构造了一段代码,并且让指针指向那里),程序就存在潜在的风险。

C#从2.0开始,逐渐远离了Java,事实上,到C# 4.0,C#已经从Visual Basic,函数式编程语言、查询语言、动态脚本语言上吸取了很多优点。

#7


C#=(C++)++

#8


C#是一门新的开发语言,自然集众多语言优点而一身(有抄袭之嫌), 理论和实际上可以跨平台,
之所以最终选择了C++语法,是因为C++语法本身面向对象的特点和C语系语法使用非常广泛可以快速被大部分
开发人员所接受.

#10


c#不适合搞底层开发

#11


语言都有共通之处,学了一门语言后,学另外一门其实并不难

#12


说点有意思的

C是C++爸爸,是C#的爷爷

C++之所以在C之后加“++”符号,来源于C语言中“++”运算符.
C#之所以在C之后加“#”符号,因为在乐谱中,“#”表示升调,“#”加在C之后,表示是对C/C++的升级.

#13


可以说
青出于蓝而胜于蓝

C#在绝大多数应用上优于C/C++,开发效率比他爸他爷快,而且背后还有个Microsoft撑腰,是微软平台开发的主流。
但一到底层开发,涉及到性能效率,C#就比不过他爸他爷了。

其实,选择学哪一个语言并不重要。你工作后所使用的语言并不一定是你学过的,很多情况下项目用哪种语言你就得现学这种语言。

重要的是,理解语言的基本(变量,表达式,函数,三种控制结构等等),编程思想(面向对象,事件驱动),基本的算法等等

#14


这个我最有发言权,学校学过了C(最基本的),后来好几次自学C++,从VC++6.0学到VS2005都没学会,后来看到VS2005 C#,有点兴趣了,到VS2008开始学,居然还业余做了几个小网站和软件骗了点钱花花,所以C#特别适合懒人和笨笨的人学,哈哈哈(不是说那些C#高手哦)

#15


我是LZ,谢谢大家的帮助!虽然分数有限,我心领了!

#16


c++是c的超集,这是对的,但c++和c#完全是两种语言,不兼容。c#和java是一层次的语言。
c++比c#强大,但门槛更高,薪水更高。

#17


会c的没几个会c++,会c++的都会c,但编程思维不一样,所以不是说
c++编程的人一定能把c编好。

#1


C++学好了,我认为一切都不是问题了。

#2


该回复于2011-04-23 17:23:35被版主删除

#3


2楼做广告!!

#4


期待细节

#5


该回复于2011-04-25 13:11:44被版主删除

#6


本帖最后由 caozhy 于 2011-04-23 20:26:27 编辑
C++和C#是完全不同的语言。C++不是C#的子集,C#也不是C++的子集。

C#是一种面向.NET虚拟机中间代码(IL)的语言,所以C#不适合开发硬件驱动程序。最初,C#是仿照Java创立的。

随着C#的发展,C#和Java,和C++越来越远。

C#相比C++来说,语法简洁,并且更加符合现代编程语言的特征。

C++的一个主要设计目标是最大程度的兼容C语言编译器。所以,全局变量、宏、预处理关键字等等都保留了下来。

C#完全面向对象,并且不使用指针。C#从语言设计之初,就抛弃了C++繁琐和容易出错的语法,比如:
if (i = 2) ...
在C++里面,可以编译,但是在C#里,无法编译。因为大多数情况下,程序员试图表达的是 if (i == 2)
再比如:
switch (i)
{
    case 1:
        i++;
    case 2:
        i += 2;
}
在C++里面,可以编译,当i=1,则会贯通两个分支,在C#里,会报错。

C++里,指针是一个非常灵活的特性,但是也非常容易出错,在C#里,不使用指针。

C++里,一个对象创建之后,程序员负责回收:
Class1 *p = new Class1();
...
delete(p);

C#里,垃圾回收器会自动回收不用的对象。

C#支持泛型,从语法的角度看,很类似C++的模板,但是 C# 泛型类型替换是在运行时执行的。同样,C# 泛型语法得以简化。

C#支持委托,C#的委托实现了安全的回调机制,在C++里面,使用的是函数指针——函数指针指向哪里,就会运行到哪里,如果指针指向的地址和程序员的预期不一致(比如黑客构造了一段代码,并且让指针指向那里),程序就存在潜在的风险。

C#从2.0开始,逐渐远离了Java,事实上,到C# 4.0,C#已经从Visual Basic,函数式编程语言、查询语言、动态脚本语言上吸取了很多优点。

#7


C#=(C++)++

#8


C#是一门新的开发语言,自然集众多语言优点而一身(有抄袭之嫌), 理论和实际上可以跨平台,
之所以最终选择了C++语法,是因为C++语法本身面向对象的特点和C语系语法使用非常广泛可以快速被大部分
开发人员所接受.

#9


#10


c#不适合搞底层开发

#11


语言都有共通之处,学了一门语言后,学另外一门其实并不难

#12


说点有意思的

C是C++爸爸,是C#的爷爷

C++之所以在C之后加“++”符号,来源于C语言中“++”运算符.
C#之所以在C之后加“#”符号,因为在乐谱中,“#”表示升调,“#”加在C之后,表示是对C/C++的升级.

#13


可以说
青出于蓝而胜于蓝

C#在绝大多数应用上优于C/C++,开发效率比他爸他爷快,而且背后还有个Microsoft撑腰,是微软平台开发的主流。
但一到底层开发,涉及到性能效率,C#就比不过他爸他爷了。

其实,选择学哪一个语言并不重要。你工作后所使用的语言并不一定是你学过的,很多情况下项目用哪种语言你就得现学这种语言。

重要的是,理解语言的基本(变量,表达式,函数,三种控制结构等等),编程思想(面向对象,事件驱动),基本的算法等等

#14


这个我最有发言权,学校学过了C(最基本的),后来好几次自学C++,从VC++6.0学到VS2005都没学会,后来看到VS2005 C#,有点兴趣了,到VS2008开始学,居然还业余做了几个小网站和软件骗了点钱花花,所以C#特别适合懒人和笨笨的人学,哈哈哈(不是说那些C#高手哦)

#15


我是LZ,谢谢大家的帮助!虽然分数有限,我心领了!

#16


c++是c的超集,这是对的,但c++和c#完全是两种语言,不兼容。c#和java是一层次的语言。
c++比c#强大,但门槛更高,薪水更高。

#17


会c的没几个会c++,会c++的都会c,但编程思维不一样,所以不是说
c++编程的人一定能把c编好。