C#可以做C ++可以做的一切吗?

时间:2014-02-02 11:04:25

标签: c# c++ .net memory

我是C#程序员已经有几个月了,最近我一直在考虑学习C ++。

所以我的问题是,C ++不能做C ++不能做的事情吗?

我知道C ++中的手动内存管理,但只要我不编写操作系统或极其繁重的内存应用程序,我就不要太担心了(因为我听说.NET处理自动内存管理非常孔)。

但是,我可以在C#中编写C#中的所有内容吗?我还指DLL注入,注册表编辑,驱动程序等等。

C#被认为和C ++一样强大吗?如果没有,那么C#不能做什么呢?

3 个答案:

答案 0 :(得分:5)

C#是一种比C ++更高级的语言。它对托管运行时环境的要求意味着您无法在其中编写操作系统甚至设备驱动程序。这种区域通常称为系统编程

然而,目前正在进行一项微软研究项目,以创建C#的系统程序版本。它是由Windows线程大师乔·达菲(Joe Duffy)领导的,如果相信网络上的谣言会被称为 M#。 Joe已经在blog上发布了一些有关他进度的信息。

答案 1 :(得分:5)

C#和C ++是语言。定义语言“可以”和“不能”做什么有点难以捉摸。 C ++可以做的事情和C#不能做的事情的一个例子是随意释放堆分配对象的内存,而不释放其他未使用的对象。但这在大多数情况下都无关紧要。(您可以使用Marshal.AllocHGlobalMarshal.FreeHGlobal来分配和释放内存,就像在C中一样。)

C ++可用于编写Windows驱动程序之类的主要原因是因为这是Windows支持和促进的。如果有一天微软决定只支持C#并且放弃C ++,那么我们就会说C#可以做一些C ++无法做到的事情(即使这些语言在当时神奇地保留了它们)。很可能它不会,也是正确的,因为C ++比C#更适合系统编程。但希望你明白这一点。

基本上,这不是语言本身的问题,而是它们的实现,工具和它们周围的世界。例如,you can easily write an operating system in C#。为什么?因为它有适当的工具。 You can also write for embedded systems具有非实时要求。它与语言无关,这也是因为它有一个工具。

话虽如此,请学习C ++。无论它与其他语言的比较如何,它都非常有用。

答案 2 :(得分:2)

C#基于c ++,而c ++又基于c。想想#as ++++。除非您需要使用库,否则您需要使用dll