使用C++/CLI相比于标准C++或C#有什么优势吗?

5

除了你可以使用C++语法,包括指针和析构函数等内容外,我没有看到其他实际优势。


当你说“Microsoft的C++风格”时,你是在谈论MSVC本地C++编译器中的MS扩展还是在谈论C++/CLI? - Michael Burr
我指的是编译成.NET运行时的Visual C++,我认为那是C++/CLI。 - Thomas Owens
4个回答

13

如果你在考虑为什么要使用C++/CLI而不是C#,我认为主要原因是:

  1. 对于C++开发人员来说可能更自然一些(虽然我认为这可能并不正确)
  2. C++/CLI具有非常好的桥接本地和托管环境的能力(使用“IJW” - It Just Works - 技术)

我认为Herb Sutter可能提供了最好的概述:

C++/CLI的设计理念

如果您想知道为什么要使用本机C++而不是C#/.NET,这归结为为什么要使用托管环境(安全性,更容易的开发)而不是本地代码(绝对控制,可能有速度优势)。每种方法都有争议,答案取决于您想要开发什么以及您的市场需求。


6
我认为您指的是C++/CLI,并将其与C#进行比较。C++/CLI不是C++的“变体”。它是一种全新的语言,具有完全不同的标准库和完全不同的惯例。
在工作中,我们发现C++/CLI作为C++和.NET之间的粘合语言非常有价值,但我们除了用于接口粘合之外,不会将其用于其他任何应用程序 - 在所有其他应用程序中,C#都比C++具有巨大的优势。
如果您指的是Adam所描述的MS C++扩展,如果它们使您的工作更轻松,那么没有理由不使用它们。

1

C++\CLI的真正好处是将DotNet语言与本地C++进行通信,例如许多公司首先将其GUI迁移到.Net,然后在C++中保留一些逻辑,而C++\CLI是沟通两种技术的良好桥梁,您也可以使用COM组件来实现,但出于许多原因,这不是一个好选择。


0

我认为将不同种类的 C++ 相互比较,与将 C++ 与 C# 进行比较是不同的问题。C# 相对于不同种类的 C++,是一种非常不同的编程语言。


这是正确的。但即便如此,我仍然不认为有理由使用微软的C++而不是C#。尽管我确实看到使用标准C++优于C#或使用C#优于标准C++的原因。 - Thomas Owens
我认为公司使用C++.cli是有道理的。他们不必移植太多代码,同时仍然可以访问所有的.NET框架。 - Johannes Schaub - litb
EBGreen,我认为他应该修改他的问题以表达清楚:) - Johannes Schaub - litb
@Thomas 如果你理解了使用其中一种方式的原因,那么你已经走在了得到一个好答案的路上。这真的取决于你计划要做什么。 - EBGreen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接