静态类和非静态类有什么区别?

时间:2013-02-14 09:11:27

标签: c#

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

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

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

    }
}


public class Test
{
    public static void Method()
    {

    }
}

3 个答案:

答案 0 :(得分:8)

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

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

基本上对于仅意味着包含静态成员的实用程序类,使用静态类清楚地表达了该意图,并允许编译器帮助您强制执行该用法。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

  

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