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

Blu*_*101 3 .net c# c++ memory

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

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

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

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

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

Sea*_*ean 5

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

但是,目前正在开发一个Microsoft研究项目来创建C#的系统程序版本.它是由Windows线程大师乔·达菲(Joe Duffy)领导的,如果人们相信网络上的谣言将被称为M#.乔在他的博客上发布了一些关于他进步的信息.


The*_*kis 5

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

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

从本质上讲,它不是语言本身的问题,而是它们的实现,工具和它们周围的世界.例如,您可以使用C#轻松编写操作系统.为什么?因为它有适当的工具.您还可以编写具有非实时要求的嵌入式系统.它与语言无关,这也是因为它有一个工具.

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