在C#中,我有两个带有一个静态函数的类。第一类定义为静态而另一类不定义。
public static class TestClass1
{
public static string TestFunc()
{
....
}
}
public class TestClass2
{
public static string TestFunc()
{
....
}
}
我可以将这些功能称为
TestClass1.TestFunc();
TestClass2.TestFunc();
这两种用法有什么区别,或者有没有? (这个功能在一天内被称为超过一百万次。我首先关注的是内存和性能)
答案 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'。这表明这样的类只包含静态函数。 我认为如果将静态辅助函数写入静态类,它被认为是一种更好的编程风格。