C++/CLI是非常强大的语言.它是唯一可以无缝组合托管和非托管代码的CLR语言.有多少软件开发人员(在本网站上)使用这种语言?你在什么样的项目中使用它?它是对遗留代码的修改还是原始软件的创建?你能比较旧的Managed C++和新的C++/CLI吗?您如何看待C++/CLI的当前质量和未来?
我用它来编写托管代码和本机代码之间的薄层集成.这就是全部.
其最着名的独特功能是能够无缝地深入研究非托管代码并在整个过程中修改(或意外损坏)任何可写内存 - 这在一般编程中并不是一个优势,但是当您需要它时,它就很棒.但我想我会越来越少地需要它.您可以使用/ pure标志编译C++/CLI,但它确实成为一种全新的语言.
还有另外两个很大的独特功能:
做有用的事情的析构函数.在C#中,析构函数是终结符.在C++中,它是一个适当的确定性称为析构函数.这意味着C++/CLI具有最完整的基础架构IDisposable
.C#仅帮助客户端(通过using语句),但只有C++/CLI也可以帮助实现者.我希望也许有一天C#会吸收这个功能.
鸭子类型模板,可以与CLI泛型一起使用.另一件在C#中非常有用的东西,虽然它可以在没有历史包袱的情况下更加无缝地制作.
但是C#足够好,没有最后两件事,我一般都不想使用C++/CLI.
我使用C++/CLI进行模拟项目.我实际计算的模拟引擎是用C++编写的现有代码库.我需要有一个GUI前端,我在C++/CLI中成功编写了代码.
在我看来,语言与C#一样容易编码,尽管有轻微的语法尴尬.也就是说,语法比微软早先提出的Managed Extensions简单得多.
C++/CLI最强大的功能之一就是能够将现有的本机C++代码重新编译为MSIL.当然可能会出现打嗝,但对于大多数应用来说,它应该是一个无故障的练习.
至于C++/CLI的适用性,我认为它仍然是一种与C++互操作的语言.如果您正在编写一个全新的应用程序,那么选择C++/CLI绝对没有理由,例如C#.正如我所说的,这是比较尴尬一点点比后者使用.