小编典典

方法可以设为静态,但应该这样吗?

all

ReSharper 喜欢指出每个 ASP.NET
页面的多个功能,这些功能可以设为静态。如果我将它们设为静态,它对我有帮助吗?我应该将它们设为静态并将它们移动到实用程序类吗?


阅读 73

收藏
2022-03-22

共1个答案

小编典典

静态方法与实例方法C# 语言规范的
静态和实例成员解释了差异。通常,静态方法可以比实例方法提供非常小的性能增强,但仅在有些极端的情况下(有关更多详细信息,请参见此答案)。

FxCop 或代码分析中的规则 CA1822 指出:

“在 [将成员标记为静态]
之后,编译器将向这些成员发出非虚拟调用站点,这将阻止在运行时检查每个调用以确保当前对象指针非空。这可以带来可衡量的性能提升对于性能敏感的代码。在某些情况下,无法访问当前对象实例表示正确性问题。

实用程序类
您不应该将它们移动到实用程序类,除非它在您的设计中有意义。如果静态方法与特定类型相关,例如ToRadians(double degrees)方法与表示角度的类相关,则该方法作为该类型的静态成员存在是有意义的(注意,这是一个用于演示目的的复杂示例)。

2022-03-22