静态函数之间有什么区别,一个属于静态类,另一个不属于静态类。

时间:2014-06-13 11:40:21

标签: c# static-methods

在C#中,我有两个带有一个静态函数的类。第一类定义为静态而另一类不定义。

public static class TestClass1
{
    public static string TestFunc()
    {
        ....
    }
}

public class TestClass2
{
    public static string TestFunc()
    {
        ....
    }
}

我可以将这些功能称为

TestClass1.TestFunc();
TestClass2.TestFunc();

这两种用法有什么区别,或者有没有? (这个功能在一天内被称为超过一百万次。我首先关注的是内存和性能)

2 个答案:

答案 0 :(得分:2)

对于C#,没有功能差异,只有static类中的方法可以声明为扩展方法,即首先使用this SomeType name参数。这两个例子都试图在这里做。除此之外:它们完全相同。

如果不期望要创建的任何类型的实例(即它应该是实用程序类),那么您应该使用static class。这一点的主要原因是它阻止了创建,子类化等。在static class之前,在旧的C#版本中,您必须这样做:

public abstract class MyType {
    private MyType() {}

    // ...methods...
}

获得可比较的东西。

答案 1 :(得分:1)

使用静态类或非静态类中的静态函数没有区别。 (除了Marc Gravell提到的那个)

类的属性'static'表示:'abstract sealed'。这表明这样的类只包含静态函数。 我认为如果将静态辅助函数写入静态类,它被认为是一种更好的编程风格。