静态类和非静态类之间的区别是什么

本文关键字:静态类 区别 是什么 之间 | 更新日期: 2023-09-27 17:59:15

有人能解释一下这两个类的区别吗?

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

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

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

静态类和非静态类之间的区别是什么

第一个类是静态的,意思是:

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

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

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

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

类可以声明为静态,表示它只包含静态成员。无法创建静态的实例使用new关键字初始化。静态类自动加载当程序或者加载了包含该类的命名空间,引用。