JetBrains Rider 2025.2 Help

C++/CLI 支持

C++/CLI 是 Microsoft 提供的一组 C++ 语言扩展,旨在实现托管代码和本机代码之间的轻松互操作性。 它包括泛型、值类和引用类、句柄、跟踪引用、接口以及其他语法扩展。

除了主要的 代码分析导航和搜索编码辅助以及您在 C++ 中习惯使用的其他功能外,JetBrains Rider 还为 C++/CLI 特定的情况提供了额外支持。

搜索和导航

由于 C++/CLI 是语言之间的桥梁,JetBrains Rider 提供了跨语言导航功能以提高互操作性:

转到派生符号 还适用于 C++/CLI 属性中的 get/集合 函数以及 C++/CLI 事件中的 添加/移除 函数。

在 C++/CLI 中转到派生

代码分析

JetBrains Rider 包含一组针对 C++/CLI 特定语言结构的检查:

  • 如果接口成员缺少 虚拟 指定符,或者没有 公开 可访问性,您将收到警告。

    方法必须是 public 和 virtual
  • JetBrains Rider 会检查您分配内存的方式,并在目标类型无效时建议快速修复,将 gcnew 替换为 new。 它还适用于将 new 替换为 gcnew

    无法在本机类型上使用 gcnew
  • JetBrains Rider 会在您尝试对托管类或接口使用 C++ final 指定符时发出警告,并提供快速修复以将其更改为 sealed

    将 final 替换为 sealed

此外,还有一些针对 C++/CLI 的有用快速修复。 例如,C++/CLI 中的 safe_cast 运算符在从基类向派生类进行向下转换时特别有用: safe_cast 会执行动态检查,并在转换失败时抛出 InvalidCastException。 您可以使用快速修复将 C 风格的强制类型转换转换为 safe_cast

使用 C 风格的强制类型转换代替 C++ 类型转换

嵌入提示

除了 参数名称类型名称提示 之外,JetBrains Rider 还为 C++/CLI 装箱转换提供了 类型转换提示 ,这会在托管堆上分配内存。 此类标准转换的提示默认是禁用的,但您可以在 JetBrains Rider 设置 的 编辑器 | 内嵌提示 | C++ | 类型转换提示 页面上启用它们 Ctrl+Alt+S

C++/CLI 装箱转换

格式化样式

额外的格式化设置允许您配置 C++/CLI 泛型约束的样式:选择首选的缩进方式,在需要的地方添加空格,并强制换行(编辑器 | 代码样式 | C++)。

generic <class ItemType> where ItemType:IItem ref class Stack {};
generic <class ItemType> where ItemType : IItem ref class Stack {};

后缀补全

某些 C++ 后缀模板 专为在其上下文中生成 C++/CLI 代码而设计。

  • 使用 .gcnew 生成类型的实例化表达式。

  • 使用 .safe_cast 将表达式包围在 .safe_cast 中。

已知问题和局限性

最后修改日期: 2025年 9月 26日