【问题标题】:Can C# do everything C++ can do? [closed]C# 能做 C++ 能做的所有事情吗? [关闭]
【发布时间】:2014-02-25 21:38:31
【问题描述】:

我做了几个月的 C# 程序员,最近我一直在考虑学习 C++。

所以我的问题是,有什么 C++ 可以做而 C# 不能做的事情吗?

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

但是,我可以在 C# 中编写所有可以在 C# 中编写的程序吗?我也指 DLL 注入、注册表编辑、驱动程序之类的东西。

C# 是否被认为与 C++ 一样强大?如果没有,C# 不能做什么 C++ 可以?

【问题讨论】:

  • 模板元编程。
  • 对嵌入式设备进行编程(无 C# 运行时)。
  • 从理论上讲,你可以定义的算法类别是一样的。
  • 你不能直接写入硬件,因为你不能“绕过”内存处理。但是话又说回来,大多数人在“正常”编程中从来不需要这个,因为它属于“操作系统”类别。话虽如此,学习另一种语言有什么问题。绝对伤不起。然后,您可以参加与潜在雇主的面试,并准确解释您刚刚提出的问题,如果您碰巧遇到此类问题。了解更多信息永远不会受到伤害。
  • 你能说明一下你学过的语言和你学的语言吗?您的问题在这方面提供了相互矛盾的信息。

标签: c# c++ .net memory


【解决方案1】:

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

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】:

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

    但是,目前有一个 Microsoft 研究项目正在进行中,以创建 C# 的系统程序版本。它由 Windows 线程专家 Joe Duffy 领导,如果网络上的谣言可信,它将被称为 M#。 Joe 在他的blog 上发布了一些关于他的进度的信息。

    【讨论】:

    • 好吧,如果我们忽略操作系统和驱动程序,C++ 可以做 C# 做不到的事情(忽略操作系统)吗?我的意思是,例如,在 3D 游戏类别中。例如,每个用 C++ 编写的 3D 游戏都可以用 C# 编写并以相似的速度运行吗?
    • @BlueRay010 - 当然,您可以用 C# 编写大量 3D 游戏。我怀疑 Window 8 商店中的大部分游戏都是这样编写的,它们可能与 C++ 等效。不过,我不认为你会匆忙看到 Crysis 移植到 C#!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多