.net - 请描述您使用 Microsoft C++/CLI 的经验

标签 .net c++-cli clr

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




C++/CLI 是非常强大的语言。它是唯一可以无缝组合托管和非托管代码的 CLR 语言。有多少软件开发人员(在这个网站上)使用这种语言?你在什么样的项目中使用它?是改编遗留代码还是创建原始软件?您能否将旧的托管 C++ 与新的 C++/CLI 进行比较?您如何看待 C++/CLI 的当前质量和 future ?

最佳答案

我用它来编写托管代码和 native 代码之间的薄集成层。仅此而已。

它最著名的独特功能是能够无缝深入研究非托管代码并在整个过程中修改(或意外损坏)任何可写内存 - 这在一般编程中不是优势,但是当您需要它时,它很棒。但我想我会越来越少地需要它。您可以使用/pure 标志编译 C++/CLI,但它真的变成了一种全新的语言。

不过,还有另外两个很大的独特功能:

  • 做一些有用的事情的析构函数。在 C# 中,析构函数是终结器。在 C++ 中,它是一个适当的确定性称为析构函数。这意味着 C++/CLI 拥有最完整的基础架构来处理 IDisposable。 . C# 只帮助客户(通过 使用 语句),但只有 C++/CLI 也帮助实现者。我希望有一天 C# 会吸收这一特性。
  • Duck 类型模板,可与 CLI 泛型一起使用。另一件在 C# 中非常有用的东西,尽管它可以在没有历史包袱的情况下更加无缝地制作。

  • 但是 C# 已经足够好了,没有最后两件事,我一般不想使用 C++/CLI。

    关于.net - 请描述您使用 Microsoft C++/CLI 的经验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/704388/

    相关文章:

    c# - WCF 'one way' 通信实际上是 UDP 吗?

    c - 回调分配期间出现“无法从...转换”错误(从 C 迁移代码)

    c++ - 是否可以在 native Windows 8.1 桌面应用程序中确定屏幕方向?

    .net - 一台机器上运行的 CLR 和 GC 实例的数量?

    c++-cli - c++/cli 如何在内部与非托管部分一起工作?

    clr - CLR 中的堆栈管理

    .net - 为什么 ObservableCollection 没有 RemoveAll 方法?

    c# - .Net 中 NameValueCollection 的通用形式

    .net - 如果 .NET 程序遇到无效数据,应该抛出什么异常?

    .net - C++/CLI 程序集中定义的 Powershell 和枚举