【问题标题】:What is the difference between a static and a non-static class? [duplicate]静态类和非静态类有什么区别? [复制]
【发布时间】:2013-02-14 09:11:26
【问题描述】:

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

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

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

    }
}


public class Test
{
    public static void Method()
    {

    }
}

【问题讨论】:

标签: c#


【解决方案1】:

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

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

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

【讨论】:

  • @ta.speot.is:我会将其编辑为“实例构造函数”
  • +1 一如既往的好答案。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 1970-01-01
      • 2011-07-11
      • 2013-07-21
      • 2013-07-26
      • 2016-10-21
      • 2016-08-29
      • 2013-07-05
      • 1970-01-01
      相关资源
      最近更新 更多