ReSharper 喜欢指出每个 ASP.NET 页面的多个功能,这些功能可以设为静态。如果我将它们设为静态,它对我有帮助吗?我应该将它们设为静态并将它们移动到实用程序类吗?
静态方法与实例方法C# 语言规范的 静态和实例成员解释了差异。通常,静态方法可以比实例方法提供非常小的性能增强,但仅在有些极端的情况下(有关更多详细信息,请参见此答案)。
FxCop 或代码分析中的规则 CA1822 指出:
“在 [将成员标记为静态] 之后,编译器将向这些成员发出非虚拟调用站点,这将阻止在运行时检查每个调用以确保当前对象指针非空。这可以带来可衡量的性能提升对于性能敏感的代码。在某些情况下,无法访问当前对象实例表示正确性问题。
实用程序类 您不应该将它们移动到实用程序类,除非它在您的设计中有意义。如果静态方法与特定类型相关,例如ToRadians(double degrees)方法与表示角度的类相关,则该方法作为该类型的静态成员存在是有意义的(注意,这是一个用于演示目的的复杂示例)。
ToRadians(double degrees)