-8

有人可以解释一下这两个类之间的区别吗?

我总是使用第一个,但我也经常使用第二个。

public static class Test
{
    public static void Method()
    {

    }
}


public class Test
{
    public static void Method()
    {

    }
}
4

3 回答 3

8

第一个类是静态的,这意味着:

  • 您不能将其用作类型参数
  • 您不能将其用作变量类型
  • 它将没有实例构造函数(而您的非静态类隐式具有公共无参数构造函数)
  • 它将是隐式抽象和密封的(即使该组合不能是静态的
  • 它不能包含任何非静态成员
  • 它可以包含扩展方法(如果它是顶级的非泛型静态类)

Basically for utility classes which are only meant to contain static members, using a static class expresses that intent clearly and lets the compiler help you enforce that usage.

于 2013-02-14T09:13:27.307 回答
1

静态类永远不能被实例化,只能有静态成员。在您的第二个代码片段中,您可以创建一个实例Test,但不是在第一个。

于 2013-02-14T09:12:55.307 回答
0

静态类只能包含第一个静态成员。第二个是非静态类,可以包含静态和非静态。

一个类可以声明为静态的,表明它只包含静态成员。无法使用 new 关键字创建静态类的实例。加载包含类的程序或命名空间时,.NET Framework 公共语言运行时 (CLR) 会自动加载静态类,参考.

于 2013-02-14T09:13:08.530 回答