我在SO中找到的最接近的问题是this one,但答案实际上是指C ++ / CLI优于 C#的优势。
我需要了解C ++ / CLI相对于标准C ++ 的优势。
答案 0 :(得分:13)
C ++ / CLI和托管C ++(或 C ++托管扩展)是两回事。托管C ++是以前的版本,并且有一些语法差异。它也被弃用,转而使用C ++ / CLI。
C ++ / CLI是ISO C ++的扩展,因此比较没有实际意义。它允许编写将在CLR上运行的代码。因此,是否要使用该扩展取决于您是否需要在C ++中编写需要与CIL语言(例如C#)接口的东西。
例如,如果您需要在.NET应用程序中使用用C或C ++编写的旧库,则可以为其编写C ++ / CLI包装器。
答案 1 :(得分:11)
我还没有在答案中提到的一件事(可能是因为它更多的是一个缺点,但它是一个相关的考虑因素)是C ++ / CLI倾向于获得二等处理。 Microsoft 使用将其推送为C ++的替换。他们希望本地开发人员切换到.NET,这样做的方法是编写C ++ / CLI而不是C ++。
现在,他们已经放弃了这一点,C ++ / CLI被降级为互操作语言。 Microsoft建议您在需要混合本机C ++和.NET代码时使用它,您可以使用C ++ / CLI作为它们之间的“桥梁”,而C ++又是一流的语言。
C ++ / CLI在某些方面也落后了:
因此,如果您想编写.NET代码,请使用“真正的”.NET语言,例如C#。 如果要编写C ++,请使用“真正的”本机C ++。 如果您想混合这两者,请使用C ++ / CLI编写互操作代码。
答案 2 :(得分:3)
主要好处是可以访问.net框架和其他.net语言编写的其他代码。
答案 3 :(得分:3)
这是Bjarne Stroustrup's opinion of C++/CLI。我对此感到惊讶,因为上次我读它时,它更加消极。 (似乎微软现在已经同意他们在所有文档中都明确区分C ++ / CLI和ISO C ++。)
答案 4 :(得分:1)
它使您可以访问.NET Base-Class-Library等中的各种功能,以及您已经在C ++中可以执行的操作。
如果您如此倾向,您可以将大部分代码放在纯C#程序集中,并且只在必要时使用C ++。