如果不需要类成员,使用静态函数会更好吗?

时间:2011-01-21 16:59:46

标签: c# asp.net static static-methods

我有一个不依赖于该类的任何成员变量的成员函数。 (在我的例子中,该类是ASP.Net页面)

该功能受到保护,我不需要在本课程之外。它的唯一目的是从给定对象构建一个URL。

如果他们不依赖于课程,我是否应该将所有函数设置为静态,即使它们不在本课程之外使用? 是否有任何理由如性能或可维护性?

6 个答案:

答案 0 :(得分:5)

可能,但我会更进一步。

在这些情况下,您真的想问自己该方法是否仍然属于该类型。如果此方法不依赖于类型的数据,为什么它是该类型的一部分?有更好或更合适的类型吗?你有几个这些,可能分散在几种不同的类型中,可以在逻辑上组合在一起吗?

答案 1 :(得分:4)

答案 2 :(得分:4)

将不与成员数据交互的函数设置为静态是很好的。它只是帮助描述函数如何与其环境交互。但是应该没有性能问题。

答案 3 :(得分:0)

我不能说我对表现有足够的了解,但我听说如果它不依赖于班级成员,那么让它成为静态是个好主意。通常它给你的好处是不必浪费分配,以防你只需要那个方法,但由于它只是在你的类中,你可能已经在使用你的对象的实例。我会把它变成静态的,但在你的情况下,我不知道是否存在很大差异(从编码的角度来看)。

答案 4 :(得分:0)

如果将方法设为静态,则无需实例化类来使用它。这会更快。此外,如果它的静态我发现它使代码更短。

我不认为静态有任何性能问题,如果有的话更快。想想在.net的新版本中出现的所有扩展方法。他们都是静止的!

答案 5 :(得分:0)

实际上取决于。您的方法是否使用任何实例数据是此方法的实现细节。如果它是私人的,你可以根据需要使其静止。但是,如果它可以在您的类之外可见(例如,它是受保护的方法),您应该首先考虑接口,并且只有在此方法访问对象数据时才有意义的情况下使其成为静态。