JetBrains Rider 2025.2 Help

代码检查:成员可以设为 static(共享)(非私有可访问性)

请考虑以下方法 打印

public class Foo { public void Test() { Print("John"); } public void Print(string name) { Console.WriteLine("Hello, {0}!", name); } }
Public Class Foo Public Sub Test() Print("John") End Sub Public Sub Print(name As String) Console.WriteLine("Hello, {0}!", name) End Sub End Class

如果启用了解决方案范围分析,JetBrains Rider 会建议 打印 没有实例使用,可以设为 static。 但这有什么意义呢? 事实证明,在特定情况下,static 成员会带来一些性能上的小优势。

以下是 Microsoft 文档中的说明:

- 不访问实例数据或调用实例方法的成员可以标记为 static(在 Visual Basic 中为 Shared)。 将方法标记为 static 后,编译器将为这些成员发出非虚拟调用点。 发出非虚拟调用点将避免在运行时对每次调用进行检查,以确保当前对象指针非空。 这可以为性能敏感的代码实现可衡量的性能提升。 在某些情况下,无法访问当前对象实例可能会导致正确性问题。

要使解决方案范围的检查生效,您需要启用以下至少一项功能:

  • 简化的全局使用检查:在 JetBrains Rider 设置 的 编辑器 | 检查设置 页面上选择 在关闭全局范围分析时显示未使用的非私有类型成员 Ctrl+Alt+S

  • 解决方案范围分析 :在 JetBrains Rider 设置 的 编辑器 | 检查设置 页面上选择 启用解决方案级分析(_A) Ctrl+Alt+S

请注意,即使报告的成员在您的解决方案中没有直接使用,也可能存在间接使用的情况——例如,通过反射——或者它可能只是设计为公共 API。 在所有这些情况下,您可能希望通过以下方式之一 抑制该成员的使用检查:

  • 推荐的方法是使用 代码注解属性装饰隐式使用的成员。 为此目的有两个属性: [UsedImplicitly][PublicAPI] ,它们在功能上相似,但可以让您和您的团队成员了解该成员的实际使用方式。

  • 您还可以使用任何自定义属性来抑制使用检查。 为此,请使用 [MeansImplicitUse]属性标记该属性的定义。

  • 最后,您可以像处理任何其他代码检查一样,通过 抑制注释或抑制属性来抑制特定的使用检查。

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