C++/CLI 支持
C++/CLI 是 Microsoft 提供的一组 C++ 语言扩展,旨在实现托管代码与本机代码之间的轻松互操作。 它包括泛型、值类和引用类、句柄、跟踪引用、接口以及其他语法扩展。
除了主要的 代码分析、 导航与搜索、 编码辅助以及您在 C++ 中习惯使用的其他功能外,ReSharper 还为 C++/CLI 特定的情况提供了额外支持。
搜索与导航
由于 C++/CLI 是语言之间的桥梁,ReSharper 提供了跨语言导航功能以改善互操作性:
在从 C++/CLI 代码中查找派生符号时,ReSharper 将在 C# 代码和 C++/CLI 符号中查找。
转到派生符号 还适用于 C++/CLI 属性中的 get/set 函数以及 C++/CLI 事件中的 add/remove 函数。

代码分析
ReSharper 包含一组针对 C++/CLI 特定语言结构的检查:
如果接口成员缺少
virtual说明符,或者没有public可访问性,您将收到警告。
ReSharper 会检查您分配内存的方式,并在目标类型无效时建议快速修复,将
gcnew替换为new。 它还适用于将new替换为gcnew。
ReSharper 会在您尝试对托管类或接口使用 C++
final说明符时发出警告,并提供快速修复以将其更改为sealed。
此外,还有一些针对 C++/CLI 的有用快速修复。 例如,C++/CLI 中的 safe_cast 运算符在从基类向派生类进行向下转换时特别有用: safe_cast 执行动态检查,并在转换失败时抛出 InvalidCastException。 您可以使用快速修复将 C 风格的强制类型转换转换为 safe_cast。

嵌入提示
除了 参数名称和 类型名称提示之外,ReSharper 还为 C++/CLI 装箱转换提供了 类型转换提示 ,这会在托管堆上分配内存。 标准转换的此类提示默认是禁用的,但您可以在 ReSharper 选项 的 页面上启用它们 Alt+R, O 。

格式化样式
额外的格式化设置允许您配置 C++/CLI 泛型约束的样式:选择首选缩进、在需要的地方添加空格,并强制换行()。
后缀补全
某些 C++ 后缀模板 专为在其上下文中生成 C++/CLI 代码而设计。
使用
.gcnew生成类型的实例化表达式。使用
.safe_cast将表达式包围在.safe_cast中。